So I suffered a hard-drive failure the other week which has slowed me down a bit while I got that resolved, but the Gadget software is pretty much at a decent proof-of-concept stage. All the various services start automatically at boot (except for the webserver which starts on the first connection).
Here's how it goes:
- Plug in Pi Zero
- Wait 10 seconds
- USB ethernet, serial and mass storage pop up
- If needed, set ethernet device to "link local only" - this should be a one-time thing
- Open README.html on mass storage to get linked to the documentation
- Do what you gotta do
Here's a picture and a rather cramped screenshot showing all of this, and programming an AVR from the Pi:
I need polish this all, and neaten up my buildroot environment to make it more reproducible. The boot time is currently just over 9 seconds. I want to add SAMBA, which might push it over 10 seconds which would be a shame.
I haven't done anything about read-only rootfs yet. That also might have an impact on boot-time while the init script to set that up runs.
Still it's looking pretty good, for the most-part I'm happy with it.
I'm not too happy about the link-local addressing. For one, GNOME's network manager doesn't fall back to link-local (by design) when it can't get a DHCP address. Windows and Mac I believe do. Also I haven't managed to figure out how to bridge a link-local address so the Pi can get internet access. Might have to go back to on-board DHCP
I've been thinking a bit about how best to interact with it. Terminals are great for linux nerds, but perhaps not for the more casual hobbyist. Also, having to type in the hostname etc is a bit cumbersome. Here's two ideas I've been toying with:
- Web interfaces for common tasks, examples:
- Upload a hex file to flash an AVR with
- Interactive i2c console
- In-browser terminal.
- Something based on hterm (Chrome only... maybe Firefox)
- ... Chrome SSH app (Chrome only...)