Many useful OpenWrt utilities and packages rely on external storage to hold data files. This guide describes how to add a single USB stick or drive to your OpenWrt device.
Note: If you have a memory limited router (say with 4MBytes Flash internal storage), and want to be able to install more packages, you should instead read the Extroot Configuration page.
Note: For NTFS disks, refer to Writable NTFS
1. Use your laptop/desktop computer to format your USB device. Use the default name and format options. This prepares the USB drive for the process below, which will erase those settings (again). Warning: This initial formatting will erase the entire USB drive.
3. Get the required packages: More...
opkg update && opkg install block-mount e2fsprogs kmod-fs-ext4 kmod-usb-storage kmod-usb2 kmod-usb3
ls -al /dev/sd* to show the name of all attached USB devices. The list may be empty if there are no USB devices. More...
5. Insert the USB drive into your router. Enter
ls -al /dev/sd* again, and this time you should see a new /dev/sdXX device. sdXX is the device name of your new USB device.
root@OpenWrt:~# ls -al /dev/sd* brw------- 1 root root 8, 0 Feb 4 15:13 /dev/sda brw------- 1 root root 8, 1 Feb 4 14:06 /dev/sda1
If you just want to temporarily (i.e: testing) mount the drive, you can simply:
mkfs /tmp/MyDrive mount /dev/sda1 /tmp/MyDrive
Note that, as of OpenWRT v18, the Ext4 file system will be autodetected. After finishing reading/writing the drive:
Note that you must umount the drive (or reboot) if you want to mount it using the below procedure, or the system will complain with “already mounted” message.
6. Make an ext4 filesystem on the USB device using the device name you just discovered. Note: Be certain you enter the proper device name - this step will completely erase the device. More...
7. Create the fstab config file based on all the block devices found. More...
block detect | uci import fstab
8. Update the fstab config file to mount all drives at startup. More...
uci set fstab.@mount.enabled='1' && uci set fstab.@global.anon_mount='1' && uci commit
9. Mount the device (now) and enable the fstab service so the device will be mounted after a reboot.
/sbin/block mount && service fstab enable
10. You're done! This procedure mounts the drive at /mnt/sdXX (whatever the device name was.) The drive is ready to save data at that part of the filesystem.
If you want more information about this procedure: