Internal USB stick in a modified WRT54GSv1 OpenWRT router


To allow the USB stick's LED indicator to be visible, I figured out which plastic hole inside the front piece it would line up with. As the front label is "reverse printed" (ie, clear plastic with the printing on the back side, with adhesive added to make it stick to the front), I used a small sharp screwdriver to clean away some of the printing to create a front panel display spot. Avoid punching thru. Used some electrical tape to block the light from leaking thru elsewhere of the front panel label, like the blue area.

Had some trouble making a WRT54GS v1 router host a USB stick. Oh, the hardware part isn't too hard to do, as long as you have some ability to solder and unsolder SMT devices. I used some kapton tape to mask off the adjacent resistors when I removed the old 4.7K resistors with new 15K SMD resistors and the new USB twisted pair. For the USB port I used an old USB connector. And a 7805 regulator to provide the 12VDC (from the router's input power jack) to 5V conversion. Here the USB stick will be inside the router. It will look like 29.8GB of non-volatile memory, at /mnt/sda1 or, if you do the redirect as described below, /www/sda1 on a SSH console.

Then you do the instructions at the OpenWRT web site. Thing is, they assume some knowledge of linux and other software procedures. You need to install various packages as per the above instruction web pages. I ended fumbling around with this, the router would seem to realize that a USB thumb drive was inserted, but I couldn't find how to access the files on the thumb drive. Not sure what I did, but it started to let me see the files on the thumb drive. Here in Chaos Calmer OpenWRT you need to fill in the "mount points" section of the mount points page. So the router finds the USB stick. Yes, I can hear all you Linux and SW experts snickering, but I'm a hardware guy. Thus this page isn't a complete how-to guide... See at the bottom of this page for a list of all the installed packages, with the preexisting ones.

To make the files on the USB stick available over your network, add this line to the local startup page:

ln -s /mnt/sda1 /www

To get there, you'd go to the OpenWRT configuration pages, at your OpenWRT router's IP address, log in, then go to the "system" tab, then under that, to the "startup" tab. Scroll down this page to find "Local Startup".

The USB stick's contents are redirected from the mount /mnt/sda1 into the /www/sda1 subdirectory. What this does is to allow someone accessing the router's web pages to access html files stored in the USB stick on the router, as this /mnt/sda1 directory is reflected to the sda1 directory in the /www directory of the router. Leave out the /www part when using your browser or creating an advertised service on your AREDN node. For example: http://10.0.50.9/sda1/3d/3d.html
where "sda1" is this subdirectory (which is the root of the USB stick) in the /www directory of the OpenWRT router. The rest of the path is per usual, here this 3d.html file is in a subdirectory 3d on the USB stick.

See using router RAM instead, though you'd need a UPS to power the router.


One can use a SSH console to place files onto the USB stick, but if it's many files, doing it this way is painfully slow. So I installed a 4PDT switch and a USB jack to allow the USB stick be available to a computer. So I can drag and drop files in Windows into the USB stick like any other USB stick. I have this switch switch the USB lines (D+, D-, 5V) and in "external computer access to the USB stick mode" powers down the router circuits. This avoids the router from reconfiguring itself to be without the USB stick. The switch doesn't appear to mess up the signal line quality.
And what it looks like inside and outside back panel:

Below are the various packages I have installed on this router, along with preexisting ones: