Deployed 81a5f3a with MkDocs version: 1.4.3

This commit is contained in:
Gilles Boccon-Gibod
2023-07-11 07:07:16 -07:00
parent 547b623fe7
commit addffad3e8
79 changed files with 10440 additions and 3756 deletions

View File

@@ -8,8 +8,14 @@
<link rel="prev" href="windows.html">
<link rel="next" href="../examples/index.html">
<link rel="icon" href="../images/favicon.ico">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.0">
<meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.16">
@@ -17,13 +23,10 @@
<link rel="stylesheet" href="../assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.cbb835fc.min.css">
<link rel="stylesheet" href="../assets/stylesheets/main.26e3688c.min.css">
@@ -44,18 +47,16 @@
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none">
<body dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
@@ -74,7 +75,9 @@
<header class="md-header" data-md-component="header">
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../index.html" title="Bumble" class="md-header__button md-logo" aria-label="Bumble" data-md-component="logo">
@@ -108,7 +111,7 @@
<a href="https://github.com/google/bumble" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
@@ -152,7 +155,7 @@
<a href="https://github.com/google/bumble" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
@@ -203,17 +206,18 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3">
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
Development
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Development" data-md-level="1">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Development
@@ -279,17 +283,18 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4">
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
Use Cases
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Use Cases" data-md-level="1">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Use Cases
@@ -411,17 +416,18 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5">
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
Components
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Components" data-md-level="1">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Components
@@ -501,17 +507,18 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6">
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
Transports
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Transports" data-md-level="1">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Transports
@@ -717,18 +724,82 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
Drivers
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Drivers
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../drivers/index.html" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../drivers/realtek.html" class="md-nav__link">
Realtek
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<label class="md-nav__link" for="__nav_7">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
API
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="API" data-md-level="1">
<label class="md-nav__title" for="__nav_7">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
API
</label>
@@ -793,18 +864,19 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_8">
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
Apps & Tools
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Apps & Tools" data-md-level="1">
<label class="md-nav__title" for="__nav_8">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Apps & Tools
</label>
@@ -995,18 +1067,19 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_9">
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
Hardware
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Hardware" data-md-level="1">
<label class="md-nav__title" for="__nav_9">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
Hardware
</label>
@@ -1045,18 +1118,19 @@
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" checked>
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" checked>
<label class="md-nav__link" for="__nav_10">
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
Platforms
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Platforms" data-md-level="1">
<label class="md-nav__title" for="__nav_10">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
Platforms
</label>
@@ -1127,7 +1201,7 @@
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
@@ -1224,18 +1298,19 @@
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_11" type="checkbox" id="__nav_11" >
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
<label class="md-nav__link" for="__nav_11">
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
Examples
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Examples" data-md-level="1">
<label class="md-nav__title" for="__nav_11">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12">
<span class="md-nav__icon md-icon"></span>
Examples
</label>
@@ -1336,10 +1411,11 @@
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="android-platform"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.61 15.15c-.46 0-.84-.37-.84-.83s.38-.82.84-.82c.46 0 .84.36.84.82 0 .46-.38.83-.84.83m-9.2 0c-.46 0-.84-.37-.84-.83 0-.46.38-.82.84-.82.46 0 .83.36.83.82 0 .46-.37.83-.83.83m9.5-5.01 1.67-2.88c.09-.17.03-.38-.13-.47-.17-.1-.38-.04-.45.13l-1.71 2.91A10.15 10.15 0 0 0 12 8.91c-1.53 0-3 .33-4.27.91L6.04 6.91a.334.334 0 0 0-.47-.13c-.17.09-.22.3-.13.47l1.66 2.88C4.25 11.69 2.29 14.58 2 18h20c-.28-3.41-2.23-6.3-5.09-7.86Z"/></svg></span> ANDROID PLATFORM<a class="headerlink" href="#android-platform" title="Permanent link">&para;</a></h1>
@@ -1395,7 +1471,7 @@ To connect a Bumble host stack to a netsim virtual controller instance, use
the Bumble <code>android-netsim</code> transport in <code>host</code> mode (the default).</p>
<div class="admonition example">
<p class="admonition-title">Run the example GATT server connected to the emulator via Netsim</p>
<div class="highlight"><pre><span></span><code>$ python run_gatt_server.py device1.json android-netsim
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>python<span class="w"> </span>run_gatt_server.py<span class="w"> </span>device1.json<span class="w"> </span>android-netsim
</code></pre></div>
</div>
<p>By default, the Bumble <code>android-netsim</code> transport will try to automatically discover
@@ -1404,7 +1480,7 @@ that discovery process fails, or if you want to specify the interface manually,
can pass a <code>hostname</code> and <code>port</code> as parameters to the transport, as: <code>android-netsim:&lt;host&gt;:&lt;port&gt;</code>.</p>
<div class="admonition example">
<p class="admonition-title">Run the example GATT server connected to the emulator via Netsim on a localhost, port 8877</p>
<div class="highlight"><pre><span></span><code>$ python run_gatt_server.py device1.json android-netsim:localhost:8877
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>python<span class="w"> </span>run_gatt_server.py<span class="w"> </span>device1.json<span class="w"> </span>android-netsim:localhost:8877
</code></pre></div>
</div>
<h3 id="multiple-instances">Multiple Instances<a class="headerlink" href="#multiple-instances" title="Permanent link">&para;</a></h3>
@@ -1420,7 +1496,7 @@ transport can work as well) as the "controller" end of the bridge.</p>
<p>To connect a virtual controller to the Android Bluetooth stack, use the bumble <code>android-netsim</code> transport in <code>controller</code> mode. For example, with port number 8877, the transport name would be: <code>android-netsim:_:8877,mode=controller</code>.</p>
<div class="admonition example">
<p class="admonition-title">Connect the Android emulator to the first USB Bluetooth dongle, using the <code>hci_bridge</code> application</p>
<div class="highlight"><pre><span></span><code>$ bumble-hci-bridge android-netsim:_:8877,mode<span class="o">=</span>controller usb:0
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>bumble-hci-bridge<span class="w"> </span>android-netsim:_:8877,mode<span class="o">=</span>controller<span class="w"> </span>usb:0
</code></pre></div>
</div>
<p>Then, you can start the emulator and tell it to connect to this bridge, instead of netsim.
@@ -1429,7 +1505,7 @@ You will likely need to start the emulator from the command line, in order to sp
<p class="admonition-title">Launch the emulator with a netsim replacement</p>
<p>In this example, we launch an emulator AVD named "Tiramisu", with a Bumble HCI bridge running
on port 8877.
<div class="highlight"><pre><span></span><code>$ emulator -packet-streamer-endpoint localhost:8877 -avd Tiramisu
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>emulator<span class="w"> </span>-packet-streamer-endpoint<span class="w"> </span>localhost:8877<span class="w"> </span>-avd<span class="w"> </span>Tiramisu
</code></pre></div></p>
</div>
<div class="admonition tip">
@@ -1444,17 +1520,19 @@ for details on how to obtain HCI snoop logs from an Android device).
Use the <code>--format snoop</code> option to specify that the file is in that specific format.</p>
<div class="admonition example">
<p class="admonition-title">Analyze an Android HCI snoop log file</p>
<div class="highlight"><pre><span></span><code>$ bumble-show --format snoop btsnoop_hci.log
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>bumble-show<span class="w"> </span>--format<span class="w"> </span>snoop<span class="w"> </span>btsnoop_hci.log
</code></pre></div>
</div>
</article>
</div>
</article>
</div>
</div>
</main>
@@ -1518,10 +1596,10 @@ Use the <code>--format snoop</code> option to specify that the file is in that s
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}}</script>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.9c69f0bc.min.js"></script>
<script src="../assets/javascripts/bundle.a51614de.min.js"></script>
</body>