USB host support certainly opens a lot of doors! I had some video files playing off a USB drive and there's now basically no limit on the size of your rootfs.
I know some of you want to get in on the action so I've linked the latest snapshot I'm using
This isn't exactly stable though. There are a few quirks with the USB right now.
First, for some reason, if the last device plugged in is not an OTG-A end cable before launching Linux, no interrupts are sent and USB is completely dysfunctional. Easy way to work around this is to get the calculator OTG cable, plug the A end into the calculator with nothing connected to the B end before starting Linux. It's possible that something isn't being set in the OTG controller.
Second, only full speed devices are supported right now. There seems to be weird bugs with high-speed devices. There's a temporary workaround that forces highspeed devices to connect at full speed.
This can cause a bit of trouble for us because if we plug in a device before the workaround has a chance to run, it won't be detected or there'll be lots of errors. This is especially a problem if our rootfs is on a USB drive. The trick I used to work around this is to set a delay before the rootfs is mounted (in my config, it's 10 seconds). When the console message says "Waiting 10 seconds before mounting root filesystem", plug in the USB drive. 10 seconds should be plenty of time to connect the device and for it to be detected and initlialized.
Other things to watch out for include: make sure only one USB drive is connected during boot time or else the kernel might get mixed up between which is your real root device and that the calculator gives out very little power. If you're connecting a hub, it is best to make sure that it is externally powered or you'll see USB errors a lot.
After boot time, USB should work as normal. Remember not to disconnect the USB drive that is mounted as the rootfs!
So, in summary, to get this snapshot up and running:
1. Prepare your rootfs. Get a USB drive that you don't mind completely erasing. In my config, I didn't have a partition table. I just ran
dd if=rootfs.ext2 of=/dev/X (replace X with your USB device).
2. Copy bootloader and bootloader script (ensure that the config inside is correct) to a place on your calc.
3. Connect your OTG cable's A end into your calculator.
4. Run the boot script.
5. Wait until the console reads "Waiting 10 seconds...". As soon as this happens, plug in your USB drive. A lot of text should scroll by - if not, you probably didn't do step 3 correctly.
6. Wait a little and you should eventually be dumped to a shell. If you get a kernel panic, it probably means you didn't do it fast enough or your USB isn't supported by the kernel.
To get mplayer working:
1. Plug in a USB drive with the movie/video you want to play and mount it as usual. This snapshot has support for MSDOS FAT and VFAT filesystems.
2. Run
mplayer -vo fbdev2 -nosound -framedrop [filename]Link to snapshotThis snapshot also has a non-working X server. If you can get xcalc or xterm to run, please email me!
Have fun!
Edit: I also highly recommend connecting a hub + keyboard. Typing on the keypad sucks!
Edit: Oh and overclock for movie playing
Ideas to expand on:
- Swap file to increase memory
- Add support for wireless dongles for interwebs