I have many open-mesh OM1P units laying around from failed wireless projects. Needless to say I’m not a big fan of open-mesh and have some other projects in mind for this hardware. It was a painful process but well worth it. Now I have nice little OpenWRT units for any hacking pleasure.
I have made a concise synopsis of the openwrt wiki page for flashing proper firmware on the OM1p/Fon/Fonera/Accton/etc. Please visit http://wiki.openwrt.org/toh/fon/fonera#openwrt for more detail.
Begin with serial access
You will need a TTL serial to usb or similar like this https://www.adafruit.com/products/284
Consult the openwrt wiki for pinout of om1p
Use minicom or screen to access it.
We need a tftp server (don’t worry its super easy if your using Debian :-).
I tried with http (apache) and it doesn’t work.
apt-get install atftpd
cd /srv/tftp/
wget http://downloads.openwrt.org/backfire/10.03.1/atheros/openwrt-atheros-vmlinux.lzma
wget http://downloads.openwrt.org/backfire/10.03.1/atheros/openwrt-atheros-root.squashfs
(don’t install anything newer than 10.03.1, this little thing is old)
stop network manager so we can assign static ip:
/etc/init.d/network-manager stop
assign static ip:
ip address add 192.168.0.2/24 dev eth0
connect to the usb serial:
screen /dev/ttyUSB0 9600
a few seconds into the boot you will see the following:
Board: ap51 RAM: 0x80000000-0x82000000, [0x8003f640-0x80fe1000] available FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each. == Executing boot script in 3.000 seconds - enter ^C to abort
You have 3 seconds to press ctrl+c to interrupt the boot process and enter into redboot boot loader
On the om1p, in RedBoot, run the following commands.
Set the ip of redboot and the tftp server:
(Don’t forget to connect them with ethernet cable.)
RedBoot> ip_address -h 192.168.0.2 -l 192.168.0.1/24
IP: 192.168.0.1/255.255.255.0, Gateway: 0.0.0.0 Default server: 192.168.0.2
download linux onto the om1p:
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-vmlinux.lzma
Using default protocol (TFTP) Raw file loaded 0x8003f800-0x8011f7ff, assumed entry at 0x8003f800
initialize the current flash partition, this will erase openmesh firmware, yay!:
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Now flash the kernel image to memory:
RedBoot> fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
... Erase from 0xa8030000-0xa8110000: .............. ... Program from 0x8003f800-0x8011f800 at 0xa8030000: .............. ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Now load the rootfs:
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs
Using default protocol (TFTP) Raw file loaded 0x8003f800-0x8021f7ff, assumed entry at 0x8003f800
And then flash the rootfs:
RedBoot> fis create rootfs
... Erase from 0xa8110000-0xa82f0000: .............................. ... Program from 0x8003f800-0x8021f800 at 0xa8110000: .............................. ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
Reboot the om1p:
RedBoot> reset
You will see OpenWRT booting and creating filesystems and such.
... jffs2_scan_eraseblock(): End of filesystem marker found at 0x0 jffs2_build_filesystem(): unlocking the mtd device... done. jffs2_build_filesystem(): erasing all blocks after the end marker... done. mini_fo: using base directory: / mini_fo: using storage directory: /overlay BusyBox v1.15.3 (2011-11-24 02:38:24 CET) built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M Backfire (10.03.1, r29592) ------------------------ * 1/3 shot Kahlua In a shot glass, layer Kahlua * 1/3 shot Bailey's on the bottom, then Bailey's, * 1/3 shot Vodka then Vodka. --------------------------------------------------- root@OpenWrt:/#
Now we need to set a heartbeat for the hardware watchdog otherwise the om1p reboots every 5 minutes.
vi /etc/config/om1pwatchdog
#!/bin/sh gpioctl dirout 3 ; gpioctl clear 3 sleep 1 gpioctl set 3
Make it executable:
chmod 755 /etc/config/om1pwatchdog
Run every 2 minutes:
crontab -e
add the following and save
*/2 * * * * /etc/config/om1pwatchdog
Start NM again, you will now get an ip from the om1p openwrt dhcp server.
/etc/init.d/network-manager start
connect with firefox at http://192.168.1.1
yay, no more crap open-mesh!