Rg Flash
From Bubble
Contents |
Introduction
Till Straumann has made a very good work to allow to run Etherboot from the RG-1000.
The nice thing is that the code is prepended to the original firmware, and Till's initial loader allows you to choose between Etherboot and the original firmware.
Although Till's work could be used as is, I have ported the changes to Etherboot 5.2.3 (from 5.0.0), and dropped the features I was not using (mainly the possibility to Etherboot wireless).
Initial Loader
No particular issue here, I just made minor modifications:
- Makefile and directory structure changed.
- We try do download the !KarlBridge firmware directly from Internet
- Directory layout changed (bin and firmware are ignored by CVS, which makes things easier)
- The loader accept lowercase characters (I was tired to press the shift key)
- The NVRAM data is not extracted anymore at this place -- we are not using it anyway
Etherboot
The porting to Etherboot 5.2 has been a major headache...
The RG-1000 crashed at the very beginning. It took me at least a week to understand where it crashed (enabling interrupts in real mode), and more than a week to try to fix it until I realized that Till's original version did not work either under the same circumstances!
/!\ After flashing the firmware, the RG-1000 must be powered off!
The original !KarlBridge firmware does not seem to have a problem with that, but Etherboot will definitely not run after a firmware upgrade until the RG-1000 is powered off.
I should have know, it is stated in Till's pages...
The main changes to the stock Etherboot are:
- Configuration files
- Patches to the Lance network driver
Etherboot 5.2 is running 'as good as' 5.0 -- what I mean by that is not always initialized properly after a cold boot; but works after a reset.
This needs further investigations.
Compared to the original changes made by Till, I have dropped significant part of his code:
- Support for booting from the wireless device.
Although it looks attractive, we would need to have anyway another node in the area which accepts non-AODV requests. This can be a nice-to-have, but out-of-scope at this time... - Checksum on packet received.
This is mainly useful when you boot wireless. - Handling of the NVRAM data (not) saved by the loader
Flashing the RG-1000
You need:
- A client tool to upload the new firmware.
I am using the java-based RG-1000 Configurator (GPL).
All the screenshots from this page are based on this tool.
/!\ If the home page of the RG-1000 Configurator is not accessible, you can download it from here. - The new firmware, which is a bundle: Initial Loader/Etherboot/!KarlBridge
It is included in the RC-1000 distribution package.
Several cases are possible, depending on the initial state of your RG-1000.
Original Orinoco Firmware
I have no clue on what the original firmware is, I never tried it!
If the hardware of the RG-1000 is the same as the Apple Airport, it does not seem that they are using the same firmware.
As far as I know, the only way to flash the RG-1000 with a custom firmware is to use the #ForcedReload forced reload procedure as described hereunder.
As illustrated here, you can use the RG-1000 Configurator to talk to the RG-1000, but you will not be able to flash it: the flash procedure works, but at the end, you still have the original firmware. It looks like it does not want to flash a non-Orinoco firmware...
- Start the RG-1000 Configurator
- Select Discover Devices (I have a DHCP server in my network)
Note the 6 hex digits numbers at the end of the Device Name line (059c62 here): this is the Id of your RG-1000. It is also printed out on the labels that are under and behind the device. It is actually the initial password (Community Name) and by the way the last 3 bytes of the mac address of the wireless card (the ones we are using to set the IP :-? ).
Thanks to PhilT for this information. - On the main page you can then enter the IP and password you discovered and retrieve configuration
- That's it! as said above, you will not be able to flash the RG-1000 from here, so it is it is time to say goodbye to the original firmware and proceed to the next section: the #ForcedReload forced reload procedure
Forced Reload Procedure
You will have to use this procedure if for whatever reason your firmware is dead (uploaded bad firmware) or if you have the original Orinoco firmware on your RG-1000.
- Power off your RG-1000
- Press the Force Reload button and keep it pressed
- Power the device on
- Wait until the Power LED turns orange, all others off
- Release the the Force Reload button
- Start the RG-1000 Configurator
- Select Discover Devices
Note that the output is not the same as before (a.o. DHCP is not used).
# To be able to upload the new firmware, you will have to be in the same subnet!
At this time, reconfigure your interface. On Linux, you can do that very easily by adding a virtual interface:
# ifconfig eth0:1 153.69.254.1 up
- Enter the IP address of the RG-1000 (153.69.254.254) and the password (use public) in the configurator
- From the File menu, select Upload new base station firmware
- Select the new firmware
- Select Upload firmware with default settings
- The RG-1000 will reboot
- At this stage, do not forget to power-off the device or the customized firmware will not work (crash in Etherboot)
/!\ Note that by default, the RC-1000 customized firmware boots by default with Etherboot and does not load !KarlBridge. If you still want to load !KarlBridge, you have to disconnect the network cable at boot time.
KarlBridge Firmware
Once you have the !KarlBridge firmware running (either the pristine !KarlBridge or the RC-1000 customized) you can very easily flash new firmwares -- just use the java-based RG-1000 Configurator without any special trick.

