9 ms·
What are some interesting uses of WebUSB you have come across?
The stadia controller bluetooth firmware unlocker was the first time I experienced WebUSB
https://stadia.google.com/controller/index_en_US.html https://stadia.google.com/controller/index_en_US.html
Today I discovered the VIA project can configure my QMK keyboards
https://www.usevia.app/ https://www.usevia.app/
Both of these implementations worked perfectly on my framework Chromebook. What are some other cool examples folks have seen?
- favourable 4y agoGrapheneOS uses WebUSB to flash Pixel phones: https://grapheneos.org/install/web https://grapheneos.org/install/web
- c7DJTLrn 4y agohttps://flash.android.com/ https://flash.android.com/ as well. I don't use Android anymore, but it's seriously cool that you can reflash the OS from a webpage.
- nextaccountic 4y agoCool and kind of dangerous for nontechnical users tbh
- kdrag0n 4y agoYep, WebUSB code for the curious: https://github.com/kdrag0n/fastboot.js https://github.com/kdrag0n/fastboot.js
- bradly 4y agoI’ve seen it used as a POS with a chip reader.
- ozfive 4y agoCan you elaborate on this solution? It sounds interesting.
- yamtaddle 4y agoThe magnetic strip kind used to be able to just act as a keyboard. Didn't need WebUSB to use one with a web site.
- c0nsumer 4y agoWebUSB is a lot nicer because then you don't have credit card swipes, when the wrong thing is in focus, going to the wrong place.
- c0nfusedpengu1n 4y agoChanging settings on an electric open source powered paraglider. Easy to interface with Arduino Eg. https://config.openppg.com https://config.openppg.com
- roxgib 4y agoDoes a device need to specifically support WebUSB, or will it work with any USB device so long as the web page supports it? Or is it the browser that needs to support the device? I found contradictory information on this when searching.
- maushu 4y agoShould work with any device. The web page needs to implement the driver/protocol to communicate with the hardware.
- memen 4y agoThe website has to start the interaction with the USB device, it can be any USB device (not sure anymore, but i think you had to filter for Vendor ID). The browser needs to support WebUSB, currently only Chrome. On the USB device you can implement the WebUSB descriptor to link to your own website. This will give a notification on your desktop to open your website.
- roxgib 4y agoThanks, I think I misunderstood the last bit to mean the USB device needed to specifically support WebUSB.
- ficklepickle 4y agoApparently the basic requirement is that the device should not have a driver already claiming the interface. More info here: https://web.dev/build-for-webusb/ https://web.dev/build-for-webusb/
- scrollaway 4y agoI suspect WebUSB will allow eID readers to work natively without having to install custom firmware in the future. This affects all EU countries.
- ThrowawayTestr 4y agoThe online flasher for WLED uses it. install.wled.me
- simonjgreen 4y agoNot a direct answer, but ESPHome uses WebSerial to flash images which is similar.
- severak_cz 4y agoUpdating firmware of synth.
- scotu 4y agoSame, for example Noise engineering https://noiseengineering.us https://noiseengineering.us has 2 lines of eurorack synthesizer modules which are each built on the same hardware and they let you swap firmwares (change your delay module firmware to the distortion module firmware, your drum synth firmware to a compression effect firmware...). (Also you can write your own fw)
- rxyz 4y agoWooting added a web app option for setting up their newer keyboards. Full feature parity with the desktop version
- kinlan 4y agoWe track some interesting examples here too https://developer.chrome.com/blog/fugu-showcase/?api=webusb https://developer.chrome.com/blog/fugu-showcase/?api=webusb
- iuafhiuah 4y agoSimilar to your examples. The NReal Air AR glasses are activated and the firmware is patched using WebUSB: https://activation.nreal.ai/en/nreal-air-upgrade-plus.html https://activation.nreal.ai/en/nreal-air-upgrade-plus.html
- BiteCode_dev 4y agoThis is cool, but both safari and firefox will not implement it: https://usefulangle.com/web-updates/post/80/firefox-decines-to-implement-web-usb-api https://usefulangle.com/web-updates/post/80/firefox-decines-... I assume this is because of security concerns.
- moondev 4y agoSecurity or privacy (thumbprinting)? To be fair I'm still exploring it, once you choose a USB device when prompted, is that access for the session or longer?
- ocdtrekkie 4y agoI think it might be session, but the issue is that most users simply accept permission popups, often without consciously recognizing they did. I've cleaned out the notifications permissions on browsers for dozens of people; all of them denied allowing various websites to spam them with notifications.
- protonscientist 4y agoAm I alone in thinking even its Chrome implementation is a massive security risk? The fact that users can grant any webpage COMPLETE control of a USB attached device is astonishing. Live webpages shouldn't be able to access this feature - can't wait for fake jailbreak and backup services to start cropping up.
- ocdtrekkie 4y agoIt's an incredibly bad idea, at work for the one Chromium browser we permit (Edge), we have to use policies to block this and several dozen major security vulnerabilities that exist solely because they make cool Google I/O demos.
- taviso 4y agoWhy is it a security vulnerability? I really want WebUSB to succeed, it could be a cross platform way to eliminate random executables from shady websites. The idea is that your browser can mediate and scope access to specific devices. There are some edge cases where Web USB is equally as dangerous as the status quo, but in the common case it is far better and never worse. The situation today is you buy a random USB gadget (e.g. a fitness tracker), but you can't use it without also installing the accompanying software/drivers. That effectively gives the manufacturer complete control of your computer. All you really wanted was for them to sync your step count, but you have no option but to give them complete remote access to your computer. With Web USB you can allow vendor.com to access device 1234:5678 only, and revoke that access whenever you like. Sure, maybe you could be tricked into clicking through all the confirmations and granting https://fakevendor.com https://fakevendor.com access to a device. That could be bad - but no worse (and probably a lot better) than being tricked into downloading and running fakedriver.exe. (disclaimer: I work for Google, have nothing to do with Chrome)
- beyondcompute 4y agoWeb MiniDisc: https://github.com/asivery/webminidisc https://github.com/asivery/webminidisc
- joecool1029 4y agoThis definitely wins for me, a full easy to use management software to convert and burn or copy music off minidiscs (something that wasn't possible before digitally on most decks), it's very cool. This is the direct link to it running: https://web.minidisc.wiki/ https://web.minidisc.wiki/
- gumby 4y agoMy glucose monitor used webUSB to upload data to the manufacturer's web site, from which I could then download it (facepalm).
- amelius 4y agoteledildonics? :)
- phcreery 4y agoWeb based esp32 flasher, specifically for squeezelite-esp32 https://sle118.github.io/squeezelite-esp32-installer/ https://sle118.github.io/squeezelite-esp32-installer/
- upon_drumhead 4y agoESPHome in HomeAssistanat also makes use of WebUSB. It's a pretty seamless and nice interface. https://www.esphome.io/guides/getting_started_hassio.html https://www.esphome.io/guides/getting_started_hassio.html
- gregmac 4y agoWled [1] install is similar: https://install.wled.me/ https://install.wled.me/ [1] https://github.com/Aircoookie/WLED https://github.com/Aircoookie/WLED
- alexanderson 4y agoI’ve used it to control DMX light fixtures. https://gist.github.com/alexanderson1993/5e280410dd10639555bf90538cf40812 https://gist.github.com/alexanderson1993/5e280410dd10639555b...
- odiroot 4y agoI may be wrong about this but I think ESPHome uses it for flashing updates to to ESP8266/ESP32 devices. It always worked for me better than the OTA optioh.
- Lerc 4y agoI haven't had a good look at WebUSB but the landing page thing interests me if there is a way to user program the configuration. For instance configure a thumb drive to be storage for a WebApp and the landing page is the WebApp itself. Is this this easily doable (as a file on the drive with WebUSB info) or would it require diving into the thumbdrive firmware itself.
- memen 4y agoYes, you need to provide a WebUSB USB descriptor on the device with a link to your site.
- c0nsumer 4y agoVIA, as you mentioned, is one of the niftiest I've seen. I just wish that VIA was a bit more robust, particularly around macros... I want to do something that does separate key down and key up events with pauses between. Unfortunately, VIA doesn't do that. And worse, my keyboard (Keychron K3 Pro) doesn't yet have a public firmware build for QMK, so I can't do it directly in there either... (I'm trying to write a macro for blanking the screen in macOS. Normally this is ctrl-shift-eject with eject held for a brief moment, but a macro of that rarely works from VIA. It needs a little delay at the end. If I add a no-op key to the end it then works, but also leaves ctrl and shift stuck down until I manually press each of them, which is no good.) </digress>
- jaygreco 4y agoVIA is an awesome resource for the community and really lowers the bar on entry (our users no longer need to or are expected to compile their own firmware just to tweak keys) as well as just being convenient and nice to have. My only gripe is that they moved to web-only from “native” apps instead of offering both, but if that’s what needed to happen to bump up the development velocity, so be it. Re: the delays, I think I recently saw something about delays being possible in macros now, or perhaps soon — it might have been in QMK nightly, I can’t remember.
- deleted 4y ago[deleted]
- c0nsumer 4y agoIt's definitely not currently possible in VIA. It seems to be in normal QMK because the advanced documentation mentions it like it's a normal thing. But I otherwise agree, it really does make things easy. I just wish it did a little bit more...
- TazeTSchnitzel 4y agoI was looking into Android phone hacking and was surprised to discover https://webadb.com/ https://webadb.com/. It's a web equivalent of adb (Android Debug Bridge), which can install applications on a device connected over USB, among other things.
- f_devd 4y agoVery cool project but knowing how much access adb gives to your phone I wouldn't trust it unless you're self-hosting.
- devanl 4y agoI've deployed an internal version of the upstream project (ya-webadb [1]) before. It can be built as a static site, and the upstream version publishes to GitHub pages, so it's really easy to self-host. 1: https://github.com/yume-chan/ya-webadb https://github.com/yume-chan/ya-webadb
- jaustin 4y agoIt's used for flashing the BBC micro:bit in both Microsoft MakeCode (https://makecode.microbit.org https://makecode.microbit.org) and the micro:bit Python Editor (https://python.microbit.org https://python.microbit.org). MakeCode uses it for lots of other devices like MakeCode Arcade too https://arcade.makecode.com https://arcade.makecode.com ) It's amazing for students to be able to quickly get a program they've written in their browser onto a device in their hands that can respond to and interact with the real world. Also great because with MicroPython and the Python Editor you get a standalone Python environment including REPL that's completely isolated from the PC - schools love it because no matter what the students do they're not going to break the host PCs. (The firmware that implements web USB on the micro:bit's USB interface chip is open source, DAPLink https://github.com/ARMmbed/DAPLink https://github.com/ARMmbed/DAPLink)
- sciencesama 4y agoChromebook recovery uses webusb it looks so magical and just works, but it does ask for you to have admin rights on the machine !!
- arkadiyt 4y agoThe reason hardware 2fa keys like yubikeys are unphishable is that the browser controls the usb communication with the hardware key and passes the origin of the page to it - the page itself can't spoof an origin. But with WebUSB a page _can_ communicate directly to a yubikey and pretend it's being asked to authenticate on a different origin. It's been fixed now but it was an interesting bypass: - https://www.yubico.com/support/issue-rating-system/security-advisories/ysa-2018-02/ https://www.yubico.com/support/issue-rating-system/security-... - https://www.wired.com/story/chrome-yubikey-phishing-webusb/ https://www.wired.com/story/chrome-yubikey-phishing-webusb/
- dheera 4y agoHmm this might not quite be WebUSB territory but it would be interesting to put a Yubikey in the cloud so it could be accessed from anywhere.
- dsfgagdsaf 4y agowhat is interesting about that, and what purpose would it serve?
- dheera 4y agoIf you're far away from home, get mugged, you have nothing left on your person, and you need to get help, what do you do? You have no cash, no wallet, no cards, no phone, no yubikey, nothing. There's a public library next door where you can use an internet terminal to log into your Google Voice and G-mail and send an e-mail for help or call your family without needing cash on hand. Those websites enforce 2FA, so this is the solution to that. (I realize this breaks the premise of 2FA, but it will get you back safely, which is probably more important on your Maslow hierarchy than some infosec policy.)
- djbeadle 4y agoI've written this comment before bu what you need is a remotely controlled finger for pressing YubiKeys: https://bert.org/2020/10/01/pressing-yubikeys/ https://bert.org/2020/10/01/pressing-yubikeys/
- nravic 4y agoGrapheneOS uses WebUSB to flash your phone. Pretty wild first experience doing it for me - I'm used to the hassle of sideloading a bootloader and then flashing.
- deleted 4y ago[deleted]
- braingenious 4y agoI know this might be a silly question but I vaguely remember a (very) old iPhone jailbreak that involved going to a website on your pc and plugging your iPhone into it. I never really investigated how it worked, does anybody remember that or how it accomplished that?
- MBCook 4y agoI remember trying that on a 3G or 3GS long ago. But I have no idea how it worked.
- drjasonharrison 4y agoIt might have used the Netscape Plugin Application Programming Interface (NPAPI) https://en.wikipedia.org/wiki/NPAPI https://en.wikipedia.org/wiki/NPAPI. However it would have involved a step of downloading and installing a plugin, a few extra clicks.
- deleted 4y ago[deleted]
- itsthecourier 4y agoPOS systems printing directly to USB thermal printers
- samgranieri 4y agoI can flash the firmware on my ergodox ez with it. That’s pretty wild
- hbogert 4y agoCame here to say that. That oryx configurator is indeed pretty slick. https://configure.zsa.io/ https://configure.zsa.io/ Blew my mind that it worked flawlessly almost 3 years ago already.
- prettyStandard 4y agoI think flipper might use it.
- sk0g 4y agoNot sure if Web Serial APIs count, but I'll run with it. I created a two-part project: a web app you configure ad simulate a few* peripherals in, and a bridge device that can interact with the simulated peripherals. Essentially, a bridge between the physical microprocessor you've programmed, and the web app. Doesn't work on Firefox because those APIs aren't available however. * few being one of seven-segment display, "ultrasonic sensor", and a simple LED. https://github.com/sk0g/peripheral-emulator-bridge https://github.com/sk0g/peripheral-emulator-bridge https://github.com/sk0g/peripheral-emulator-web-app https://github.com/sk0g/peripheral-emulator-web-app
- nraynaud 4y agoI used it for my CNC milling machine. It’s used to configure quadcopters.
- theoj 4y agoIt's great for quads, I've used this to flash ESC firmware in the field with just a mobile browser and Internet connection: https://esc-configurator.com/ https://esc-configurator.com/
- ahaucnx 4y agoWe put an air quality monitor on a tethered weather ballon which sends real time data with LoRa to a base station. To keep things simple the base station receiver connects through usb and we log the incoming data directly into Chrome with webUSB. The reason to do that way was to keep it simple and without the need for a server or separate applications. Just needed a few lines of JavaScript.
- galkk 4y agoMy keyboard (ZSA Moonlander) has ultraconvenient flashing via webusb.
- skybrian 4y agoNot the same, but I wrote a serial logger/plotter using WebSerial, as an alternative to the Arduino IDE. https://github.com/skybrian/serialviz https://github.com/skybrian/serialviz Also a hack to connect to a Lego NXT brick. (Not shared since I'd need to polish it up.)
- gitgud 4y agoI think you can now compile/upload programs to Arduino Devices with a browser now which is a cool application of WebUSB https://docs.arduino.cc/learn/starting-guide/the-arduino-web-editor https://docs.arduino.cc/learn/starting-guide/the-arduino-web...
- tomayac 4y agoThe Chrome DevRel team (that I’m part of) have collected many WebUSB apps in our showcase: https://developer.chrome.com/blog/fugu-showcase/?api=webusb https://developer.chrome.com/blog/fugu-showcase/?api=webusb.