PageSourceSearch

https://www.improv-wifi.com/

html improv-wifi.com collected 2026-09-25 19:54:55 UTC 24,068 bytes, 346 lines download raw bytes

1
2
3
4
5<!DOCTYPE html>
6<html lang="en">
7  <head>
8    <meta charset="utf-8" />
9    <link href="/style.css" rel="stylesheet" />
10    <title>Improv Wi-Fi: Open standard for setting up Wi-Fi via Bluetooth LE and Serial</title>
11    <link rel="icon" href="/images/improv-favicon.png" type="image/png" />
12    <meta name="description" content="Free and open standard with ready-made SDKs that offer a great user experience to configure Wi-Fi on devices." />
13    <meta name="viewport" content="width=device-width" />
14    <meta property="og:title" content="Improv Wi-Fi: Open standard for setting up Wi-Fi via Bluetooth LE and Serial" />
15    <meta property="og:site_name" content="Improv Wi-Fi" />
16    <meta
17      property="og:url"
18      content="https://www.improv-wifi.com/"
19    />
20    <meta property="og:type" content="website" />
21    <meta property="og:description" content="Free and open standard with ready-made SDKs that offer a great user experience to configure Wi-Fi on devices." />
22    <meta
23      property="og:image"
24      content="https://www.improv-wifi.com/images/social.png"
25    />
26    <meta name="twitter:card" content="summary_large_image" />
27    <meta name="twitter:title" content="Improv Wi-Fi: Open standard for setting up Wi-Fi via Bluetooth LE and Serial" />
28    <meta name="twitter:description" content="Free and open standard with ready-made SDKs that offer a great user experience to configure Wi-Fi on devices." />
29    <meta
30      name="twitter:image"
31      content="https://www.improv-wifi.com/images/social.png"
32    />
33    
33<script type="module" src="/sdk-ble-js/launch-button.js"></script>
33
34    
34<script type="module" src="/sdk-serial-js/serial-launch-button.js"></script>
34
35
36    
36<script
37  async
38  src="https://plausible.openhomefoundation.org/js/pa-1mfDNxbEdbdL5NncgrXnA.js"
39></script>
39
40
41<script>
42  (function () {
43    // Visitors arriving from their own Home Assistant or ESPHome instance send
44    // their private URL as the referrer. The allow list is downloaded at build
45    // time by script/download_allowed_referrers; every referrer that is not on
46    // it gets replaced before Plausible records it.
47    var allowedReferrers = ["01net.com","1140369499-atari-embeds.googleusercontent.com","1ms.run","360.cn","3dmart.com.hk","4pda.to","a2t.ro","abfalltermine.de","adaptive-lighting.nijho.lt","adonno.com","agsi.gie.eu","aio-libs.org","air-q.com","airgradient.com","akamatis.com","akkudoktor.net","alarmy-olomouc.eu","alkly.de","all3dp.com","alvinchen.club","alza.cz","amazon.com","ameridroid.com","amplipi.discourse.group","androidauthority.com","androidpolice.com","api.daily.dev","api.home-connect.com","api.mcs3.miele.com","api.smartthings.com","apolloautomation.com","app.aevocam.com","app.parqet.com","appleid.apple.com","apps.garmin.com","apps.yunohost.org","arstechnica.com","askubuntu.com","asustor.com","atomic14.com","audiosciencereview.com","auth.tesla.com","automatedhome.co.uk","auweb3.isolarcloud.com","avenom.ru","awesome-ha.com","badrpc.net","baidu.com","baidu.io","banglejs.com","basehim.com","bazmac.me","bbs.hassbian.com","bbs.io-tech.fi","bega.com","berrybase.de","better-thermostat.org","billboard.com.br","bing.com","bitbucket.org","blog.decryption.net.au","blog.eischmann.cz","blog.fidelramos.net","blog.frankel.ch","blog.fxpblogs.win","blog.iot7m.ru","blog.kastanis.gr","blog.matterxiaomi.com","blog.meyerrj.com","blog.oppedahl.com","blog.slabnet.com","blog.tindie.com","blog.tomayac.com","blog.uaid.net.ua","blog.vyoralek.cz","blogspot.com","botland.com.pl","botland.de","brandlogos.org","bricozone.be","broddin.be","bsky.app","bthome.io","buildroot.org","byteoversea.com","card.camera","cb.wjz.im","cdninstagram.com","chat.novaapp.ai","chat.qwen.ai","chatgpt.com","check.anomify.ai","chip.de","chuck-builds.com","chytrevypinace.cz","ci.computer","claude.ai","clausio.fr","cloud.bemfa.com","cloud.vento.build","cloudfree.shop","clubic.com","cn.d5render.com","cnet.com","cnx-software.com","cnx-software.ru","coccoc.com","codeberg.org","codechimp.org","coinforum.de","community-smarthome.com","community.asti.ga","community.openhab.org","community.shelly.cloud","community.victronenergy.com","computerbase.de","connexion.hiloenergie.com","coolify.io","copilot.com","copilot.microsoft.com","couto.io","creator-spring.com","credexalarmsystems.eu","crowdsupply.com","dakboard.freshdesk.com","danielmartingonzalez.com","darsycertificationconsumer-wu2.azurewebsites.net","dashieapp.com","dastereo.ru","dc9vq.de","de.aliexpress.com","de.jackery.com","de.wikipedia.org","dealabs.com","deepwiki.com","degroenenerds.nl","derekseaman.com","desdeelreloj.com","dev.to","developer.chrome.com","developer.home-connect.com","developer.tuya.com","developerinsider.co","devotics.fr","devzen.ru","dfrobot.com","dietpi.com","dinamotech.it","discord.com","discovergit.app","disq.us","diy-smart-home.ei23.de","diyenjoying.com","diyfun.de","diyless.com","diysolarforum.com","doc.embedfire.com","doc.mocreo.com","docker.com","docs.evcc.io","docs.everythingsmart.io","docs.futureproofhomes.net","docs.gl-inet.com","docs.kilowahti.fi","docs.ncnynl.com","docs.openpublictransport.net","docs.paperd.ink","docs.powercalc.nl","docs.sunfounder.com","docs.tandoor.dev","docs.yaha-cloud.ru","docs.zephyrproject.org","documentation.grandstream.com","domadoo.fr","domasist.sk","domoticafacile.it","done.land","donetick.com","dopper.de","dou.ua","doubao.com","drive2.ru","duck.ai","duckduckgo.com","ecosia.org","edubox.org","efulfillservice.sugarondemand.com","element.io","en.m.nu","en.wikipedia.org","energyforecast.de","engadget.com","esp32.co.uk","espboards.dev","esphome.io","espresense.com","espressif.com","espruino.com","everythingsmarthome.co.uk","ewelinkstore.com","facebook.be","facebook.com","facebook.de","facebook.dk","facebook.es","facebook.fr","facebook.is","facebook.it","facebook.jp","facebook.mx","facebook.nl","facebook.no","facebook.se","facebook.us","faire-ca-soi-meme.fr","fancontroller.arthofer.dev","fb.com","fb.me","fbcdn.com","fbcdn.net","fitbit.com","flasher.site","fleet-auth.prd.vn.cloud.tesla.com","flipboard.com","flow.bosch-ebike.com","flows.blueforcer.de","foro.domoticaencasa.es","forum.arduino.cc","forum.armbian.com","forum.arturhome.pl","forum.ewelink.cc","forum.hardware.fr","forum.heimnetz.de","forum.iobroker.net","forum.it.mk","forum.jdtech.pl","forum.keenetic.ru","forum.magicmirror.builders","forum.mikrotik.com","forum.mypower.cz","forum.proxmox.com","forum.sailfishos.org","forum.sessy.nl","forum.wiimhome.com","forum.yunohost.org","forums.dansdeals.com","forums.lyrion.org","forums.pocketcasts.com","forums.raspberrypi.com","forums.truenas.com","fosstodon.org","foxesscommunity.com","fr.aliexpress.com","frandroid.com","frenck.dev","front-page.com","fuzznotes.com","fwd.nl","gadgets.seeed.cc","gea.com","geekxw.top","genbeta.com","getaipilot.com","gethomepage.dev","gigazine.net","git.hubp.de","github.blog","github.com","github.io","gitlab.com","gitlab.io","go.aftvnews.com","go.michaelsleen.com","golem.de","google.at","google.be","google.bg","google.ca","google.ch","google.co.jp","google.co.kr","google.co.nz","google.co.uk","google.co.za","google.com","google.com.au","google.com.br","google.com.hk","google.com.mx","google.com.my","google.com.pk","google.com.sa","google.com.sg","google.com.tr","google.com.tw","google.com.ua","google.com.vn","google.cz","google.de","google.es","google.fi","google.fr","google.hu","google.io","google.it","google.nl","google.pl","google.pt","google.ro","google.se","gotailwind.com","grokipedia.com","gstatic.
47com","haade.fr","habr-com.cdn.ampproject.org","habr.com","hacf.fr","hachyderm.io","hackaday.com","hacks.mozilla.org","hackster.io","hacs.dev","hacs.xyz","hadevices.com","hads.smarti.dev","handbook.buildwithmatter.com","hardware.info","hashop.nl","hass-agent.io","hass-cloud.auth.us-east-1.amazoncognito.com","hass.dev","hasscn.top","hatenablog-parts.com","haus-bus.de","hcker.news","hckrnews.com","healthassistantlink.com","heise.de","helgejohnsen.no","helios-ha.org","help.olarm.com","hiringcafe.com","hjemmeautomasjon.no","home-assistant-guide.com","home-assistant.cloud","home-assistant.dev","home-assistant.io","home-assistant.jp","home-master.eu","homeassistant-cz.cz","homeassistant.cloud","homeassistant.io","homeassistantbrasil.com.br","homebrainz.de","homekitnews.com","homething.io","homey.app","howtogeek.com","hwupgrade.it","hydrificwater.com","hydroqc.ca","hyotynen.iki.fi","iam.viessmann-climatesolutions.com","ias-lab.de","ibytedtos.com","ictfreak.nl","id.daikin.eu","id.whoop.com","ifa-berlin.com","ig.me","igen.fr","ikriz.nl","improv-wifi.com","indomus.it","industrialshields.
47com","inet.se","influxdata.com","infosec.exchange","inoreader.com","insiderllm.com","instagr.am","instagram.com","install.wled.me","intellicaai.space","internet.org","interop.ondilo.com","iona-ha.tinohox.de","iot.vivo.com.cn","ipstatp.com","ithelp.ithome.com.tw","itmedia.co.jp","itrend24.de","itsfoss.com","jamesachambers.com","jimwillis.org","jiuyv.info","joekarlsson.com","jonashietala.se","jpk.io","jpt.sh","jupiterbroadcasting.com","kagi.com","kb.shelly.cloud","kincony.com","kitchenowl.org","kiwi-warmer.co.nz","kjell.com","knightsoft-net.de","knuspermagier.de","knx-user-forum.de","kofler.info","konnected.io","konnected.readme.io","korben.info","kotyara12.ru","l.meta.ai","lampopumput.info","languagetool.org","lappari.com","legeek.info","leios.consulting","lemmy.lundgrensjostrom.com","lemmy.ml","lemmy.world","libhunt.com","life.taikun.blog","liliputing.com","link.csdn.net","link.gitcode.com","linkedin.com","linkshop.gr","linuxiac.com","linuxmint.com","listenbrainz.org","llmvision.gitbook.io","lnkd.in","lobste.rs","loxwiki.atlassian.net","lunoo.com","luxxle.com","lwn.net","m.me","m.sogou.com","m5stack.com","macrumors.com","mactechnews.de","mail.gnome.org","mail.qq.com","maison-et-domotique.com","makerworld.com","makeuseof.com","manelrodero.com","manuals.plus","masto.pt","mastodon.me.uk","mastodon.social","mastodon.top","matrix.to","matteoschizzerotto.dev","matteralpha.com","mattgerega.com","mauser.pt","mediarath.de","medievalapple.net","medium.com","meetco.daily.co","meinesmartewelt.de","memory.gmbot.name.vn","mergeo.dev","metabrainz.org","metager.de","mistyreverie.org","mobiflip.de","mobile-ma.app","moi.ouraring.com","mojeek.com","mostlychris.com","mqtt.cn","ms0701.tistory.com","msn.com","mu.zpete.de","mushkatyush.com","music-assistant.com","music-assistant.io","musical.ly","mwunderling.com","mypal.wang","mysku.club","nabucasa.com","nachbelichtet.com","nathan.gs","nathanorick.com","nativesprings.com","naver.com","navid.nl","navimow-h5-fra.willand.com","ncot.uk","neilturner.me.uk","netlify.app","nettop.gr","newepisody.com","newinlinux.com","news.hada.io","news.ycombinator.com","newsblur.com","ngocjohn.is-a.dev","norbert.tech","note.com","notebookcheck.net","notenoughtech.com","notify.events","npmjs.com","nspanel.domodreams.it","ntp.msn.cn","nuki.io","numerama.com","oauth.hijuconn.com","oceanhero.today","ogo.live","ohf.to","okosotthon.bolt.hu","olausson.de","olegtarasov.me","omgubuntu.co.uk","openai.com","opendisplay.org","openelab.io","openhasp.com","openhomefoundation.org","openthread.io","oshwhub.com","osnews.com","ottelo.jimdofree.com","ozsmartthings.com.au","pages.dev","paulusschoutsen.nl","pdx.su","perfectmediaserver.com","perplexity.ai","phanpy.social","phoronix.com","pi-shop.ch","pidiylab.com","pikabu.ru","pinboard.in","pine64.org","pinimg.com","pinterest.at","pinterest.ca","pinterest.co.uk","pinterest.com","pinterest.com.au","pinterest.com.mx","pinterest.de","pinterest.dk","pinterest.es","pinterest.fr","pinterest.ie","pinterest.it","pinterest.jp","pinterest.ph","pinterest.se","pixelstech.net","pluginsolarexplained.co.uk","portal.alarmtrade.ru","powerbaas.nl","powerforum.co.za","press.opera.com","printables.com","privacywall.org","prodindego.b2clogin.com","protopage.com","psenyukov.ru","psmart.pl","publish.obsidian.md","pushover.net","pypi.org","qiita.com","quark.cn","qwant.com","racemat.de","radio-browser.info","raspberrypi.dk","rbaron.net","read.readwise.io","readthedocs.io","reddit.com","reedah.com","repo.webosbrew.org","rivianforums.com","robbshop.nl","robert.stadsbygd.net","robpickering.com","root.cz","rudd-o.com","runtimeterror.dev","ruuvi.com","safe.menlosecurity.com","search.avastbrowser.com","search.brave.com","search.kafu.ovh","search.nixos.org","search.nortonsafesearch.com","search.yahoo.com","seeedstudio.com","seegel-systeme.de","selectra.info","selfh.st","selorahomes.com","sendspin-audio.com","sequr.be","servercan.net","serverfault.com","servethehome.com","seznam.cz","sheekgeek.org","sheets.works","shellagent.io","shop.everythingsmart.io","shop.pimoroni.com","signalk.org","signalkraft.com","simon42.com","simplehomelab.com","simplepush.io","sl-alex.net","slack.com","slashdot.org","slimhuisje.nl","smart-home-insights.net","smartdomo.de","smarterhome.sk","smarterkram.de","smarterpapa.de","smartevchargers.co.nz","smartguys.com.au","smarthome-assistant.info","smarthome.com.au","smarthomeassistent.de","smarthomegids.com","smarthomepursuits.com","smarthomescene.com","smarthomesecrets.ca","smarthomesolver.com","smarthomeyourself.de","smartnetandhubs.com","smlight.tech","snbforums.com","so.com","social.slat.org","solar-assistant.io","sonocotta.com","sonoff.tech","sourceforge.net","spacen.io","spfile.heimanhome.com","srwiez.com","sso.bluettipower.com","stackexchange.com","stackoverflow.com","stadt-bremerhaven.de","startpage.com","static.xtremeownage.com","steamcommunity.com","steeman.be","student-techlife.com","style.oversubstance.net","substack.com","sunenergyxt.com","superuser.com","support.bbdl.co.uk","supp
47ort.lightwaverf.com","support.powerfox.energy","support.weheat.nl","svrforum.com","sweclockers.com","swiss-domotique.ch","swisscows.com","symbaloo.com","sysadmin.in.th","t.co","t.me","t3n.de","taiwansensor.com.tw","teams.public.onecdn.static.microsoft","techboys.de","techcrunch.com","techenclair.fr","techfeed.io","technikblock.de","techurls.com","tecnoyfoto.com","telegram.me","telegram.org","terncy.com.tw","teslafacts.nl","teslemetry.com","thecandidstartup.org","themalibucrew.com","theorangeone.net","thepihut.com","theregister.com","thestockpot.net","theverge.com","threads.net","tightloop.io","tiktok.com","tiktokcdn.com","tiktokv.com","tomshardware.com","tomshw.it","tomtut.de","tool.screek.io","toot.community","topgit.dev","toppodcast.com","totaldebug.uk","trello.com","trick.vanstaveren.us","trmnl.com","troyhernandez.com","tutorials-raspberrypi.de","tweakers.net","tweetdeck.com","twingate.com","twitter.com","typingmind.com","uix.lf.technology","ultravehiclecard.com","unfoldedcircle.com","uniuit.com","url-opener.com","us.shelly.com","uscardforum.com","ut.buglloc.com","varac.net","vercel.app","verdrahtet.info","verkkokauppa.nurkantakaa.fi","versatile-thermostat.org","web.archive.org","web.max.ru","webhallen.com","webshed.org","westhaver.com","wiert.me","wifishop.ro","wiki.fabianhorst.com","wiki.freshtomato.org","wiki.futo.org","wimme.net","wired.com","wordpress.com","wulu.zone","www-hacs-xyz.translate.goog","www-home--assistant-io.translate.goog","x.com","xataka.com","xda-developers.com","xfinderr.org","xn--80abzsjfcff6fi.xn--p1ai","ya.ru","yahoo.co.jp","yandex.by","yandex.com","yandex.kz","yandex.ru","yandex.uz","yandex.xyz","yetanothersmarthome.com","youtu.be","youtube-nocookie.com","youtube.com","yuanbao.tencent.com","yuque.com","zdnet.com","zenodo.org","zerlo.net","zigbee.blakadder.com","zigbee2mqtt.io","zimaspace.com","zuidwijk.com"];
48
49    window.plausible =
50      window.plausible ||
51      function () {
52        (plausible.q = plausible.q || []).push(arguments);
53      };
54    plausible.init =
55      plausible.init ||
56      function (options) {
57        plausible.o = options || {};
58      };
59
60    plausible.init({
61      transformRequest: function (payload) {
62        var referrer = payload.r;
63        if (!referrer) return payload;
64
65        var host = "";
66        try {
67          host = new URL(referrer).hostname.replace(/\.$/, "");
68        } catch (err) {
69          // Unparseable referrer: falls through and gets replaced.
70        }
71
72        for (var i = 0; i < allowedReferrers.length; i++) {
73          var domain = allowedReferrers[i];
74          if (
75            host === domain ||
76            (host.length > domain.length &&
77              host.slice(-(domain.length + 1)) === "." + domain)
78          ) {
79            return payload;
80          }
81        }
82
83        // One aggregate bucket, so we can see how much we filter without
84        // learning anything about individual visitors. .invalid is reserved by
85        // RFC 2606 and can never collide with a real domain.
86        payload.r = "https://unlisted.invalid/";
87        return payload;
88      },
89    });
90  })();
91</script>
91
92
93  </head>
94  <body>
95    <div class="container">
96      <div class="header">
97        <a href="/"><img src="/images/improv-logo.svg" alt="Improv logo" /></a>
98        <ul>
99          
100          <li>
101            <a
102              class="active"
103              href="/"
104              >Home</a
105            >
106          </li>
107          
108          <li>
109            <a
110              class=""
111              href="/ble/"
112              >BLE</a
113            >
114          </li>
115          
116          <li>
117            <a
118              class=""
119              href="/serial/"
120              >Serial</a
121            >
122          </li>
123          
124          <li>
125            <a
126              class=""
127              href="/code/"
128              >Code</a
129            >
130          </li>
131          
132        </ul>
133      </div>
134
135      <div class="content">
136<script
137  type="module"
138  src="https://unpkg.com/@justinribeiro/[email protected]/lite-youtube.js"
139></script>
139
140
141<h2>
142  Improv Wi-Fi is an open standard for connecting devices to Wi-Fi using Bluetooth LE or Serial
143</h2>
144
145<p>
146  Improv is a free and open standard with ready-made SDKs that offer a great
147  user experience to configure Wi-Fi on devices:
148</p>
149<ol>
150  <li>Power on device</li>
151  <li>
152    Client application uses Improv to send the Wi-Fi credentials to the device
153  </li>
154  <li>The device connects to Wi-Fi network and returns a URL</li>
155  <li>User visits URL to continue setting up the device</li>
156</ol>
157<p>
158  Improv protocol can be used over Bluetooth Low Energy or via the serial port.
159  Both protocols can also be used from a browser.
160</p>
161<div>
162  <h3>Improv via BLE</h3>
163  <improv-wifi-launch-button>
164    <span slot="unsupported">
165      Your browser is not supported. To try it out, visit this page with Google
166      Chrome or Microsoft Edge<span class="not-supported-i hidden">
167        (but not on your iOS device)</span
168      >.
169    </span>
170  </improv-wifi-launch-button>
171  <h3>Improv via Serial</h3>
172  <improv-wifi-serial-launch-button>
173    <span slot="unsupported">
174      Your browser is not supported. To try it out, visit this page with Google
175      Chrome or Microsoft Edge<span class="not-supported-i hidden">
176        (but not on your iOS device)</span
177      >.
178    </span>
179  </improv-wifi-serial-launch-button>
180</div>
181<p>
182  <i>
183    Need a device that runs Improv?
184    <a href="https://esphome.github.io/esp-web-tools/">Install this example</a>
185    on an ESP32.
186  </i>
187</p>
188<h3>See it in action</h3>
189<div class="videoWrapper">
190  <lite-youtube
191    videoid="AdCsX7Ni6Jc"
192    videotitle="Improv Wi-Fi in action"
193  ></lite-youtube>
194</div>
195
196<h3>Adopted by the following projects</h3>
197
198<div class="projects">
199  <a href="https://kno.wled.ge" target="_blank" class="project">
200    <div class="logo">
201      <img src="/images/wled.png" alt="WLED logo" />
202    </div>
203    <div class="name">WLED</div>
204  </a>
205  <a
206    href="https://arendst.github.io/Tasmota-firmware/"
207    target="_blank"
208    class="project"
209  >
210    <div class="logo">
211      <img src="/images/tasmota.svg" alt="Tasmota logo" />
212    </div>
213    <div class="name">Tasmota</div>
214  </a>
215  <a href="https://www.esphome.io" target="_blank" class="project">
216    <div class="logo">
217      <img src="/images/esphome.svg" alt="ESPHome logo" />
218    </div>
219    <div class="name">ESPHome</div>
220  </a>
221  <a href="https://www.home-assistant.io" target="_blank" class="project">
222    <div class="logo">
223      <img src="/images/home-assistant.svg" alt="Home Assistant logo" />
224    </div>
225    <div class="name">Home Assistant</div>
226  </a>
227  <a
228    href="https://esphome.github.io/esp-web-tools/"
229    target="_blank"
230    class="project"
231  >
232    <div class="logo">
233      <img src="/images/esp-web-tools.svg" alt="ESP Web Tools icon" />
234    </div>
235    <div class="name">ESP Web Tools</div>
236  </a>
237  <a
238    href="https://clockwise.page"
239    target="_blank"
240    class="project">
241    <div class="logo">
242      <img src="/images/clockwise.png" alt="Clockwise logo" />
243    </div>
244    <div class="name">Clockwise</div>
245  </a>
246  <a
247    href="https://sblantipodi.github.io/glow_worm_luciferin/"
248    target="_blank"
249    class="project">
250    <div class="logo">
251      <img src="/images/luciferin_logo.png" alt="Luciferin" />
252    </div>
253    <div class="name">Luciferin</div>
254  </a>
255</div>
256
257<h3>The problem we're solving</h3>
258
259<p><b>Configuring a device to connect to your Wi-Fi network is a pain.</b></p>
260
261<p>
262  A lot of devices require to be connected to the network to be controlled or
263  receive data. The majority of these devices use Wi-Fi to establish a
264  connection with a local application or the cloud.
265</p>
266
267<p>
268  The most common approach is Soft Enabled Access Point. The device starts its
269  own Wi-Fi access point, the user connects to it with their phone/computer and
270  then interacts directly with the device via an app or a website served from
271  the device.
272</p>
273
274<p>
275  It’s easy for something to go wrong. The user submits incorrect Wi-Fi
276  credentials or the phone loses access to the access point. In such cases it is
277  difficult to recover. Phones also have a bad time dealing with access points
278  that don’t provide internet access.
279</p>
280
281<h3>Scope & Constraints</h3>
282<p>
283  The goal of the Improv standard is to get the device connected to the Wi-Fi
284  via Bluetooth Low Energy (BLE) or Serial (USB/UART). It is not the goal to
285  offer a way for devices to share data or control. The standard should work
286  without requiring the device to contain a screen.
287</p>
288
289<h3>More Reading</h3>
290
291<ul>
292  <li>
293    Read the <a href="/ble/">Bluetooth LE</a> or
294    <a href="/serial/">serial</a> documentation to see how it works
295  </li>
296  <li>Learn about <a href="/code/">the SDKs and code samples</a></li>
297</ul>
298
299<script>
300  if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {
301    document.querySelector(".not-supported-i").classList.remove("hidden");
302  }
303
304  const ble = document.querySelector('improv-wifi-launch-button');
305  const serial = document.querySelector('improv-wifi-serial-launch-button');
306  ble.addEventListener('click', () => {
307    serial.outerHTML = '<button disabled>Disabled until page reload</button>';
308  });
309  serial.addEventListener('click', () => {
310    ble.outerHTML = '<button disabled>Disabled until page reload</button>';
311  });
312</script>
312
313</div>
314
315      <div class="footer">
316        <div>
317          Improv Wi-Fi &nbsp; – &nbsp;
318          <a href="mailto:[email protected]">Contact</a>
319          &nbsp; – &nbsp;
320          <a href="https://www.github.com/improv-wifi">GitHub</a>
321        </div>
322        <div class="initiative">
323          Improv is an initiative by
324          <a href="https://www.esphome.io">ESPHome</a> &
325          <a href="https://www.home-assistant.io">Home Assistant</a>.<br />
326          Development funded by
327          <a href="https://www.nabucasa.com">Nabu Casa</a>.
328        </div>
329        <div class="analytics">
330          This website uses
331          <a
332            href="https://www.openhomefoundation.org/blog/making-our-web-analytics-open-source-with-plausible/"
333            rel="noopener"
334            >privacy-first analytics</a
335          >
336          to help us improve the site. You can view all data in our
337          <a
338            href="https://plausible.openhomefoundation.org/improv-wifi.com"
339            rel="noopener"
340            >public dashboard</a
341          >.
342        </div>
343      </div>
344    </div>
345  </body>
346</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.