LS-GL Custom Firmware Development
LS-GL Custom Firmware Development |
Please fix and update these sections. Also, please correct any grammar and spelling errors. Thanks -- jonli447
Contents
Using the Firmware Updater
It is aparent, like all of the Linkstations, that the firmware does not want to update the firmware if the LS-GL reports the same firmware version as the the one to be that's to be sent to the LS-GL (i.e. a modified firmware). The work around is to:
- Add to lsupdater.ini
[SpecialFlags] Debug = 1
- Change in lsupdater.ini
VersionCheck = 1
to
VersionCheck = 0
- Open linkstation_version.txt in any text editor (i.e. vi). Edit either the BOOT=, KERNEL=, INITRD=, or ROOTFS= (this is the main firmware and filesystem) to choose what to update by changing the version to a higher number.
- i.e. by setting rootfs to a higher number, the filesystem will get updated, but uboot, kernel, and initrd won't get updated.
- Steps originally drafted by Georg.
Note: We are not positive if only one segmet (i.e. rootfs) will get updated. This method must be fully tested to find this out.
jonli, should I move the following more technical part about Erics excellent work into a separate section? - Georg
Updater Specifications
- As EricC documented on the LS-GL side clientUtil_server handles the update process and replies to various "ACP"-Commands, which are similar for the LS-GL and the Kurobox:
- LSP Commands
- 8020 ACP_Discover
- 8080 ACP_FIRMUP2
- 80A0 ACP_?? Possible Password?
- 8A10 ACP_CMD
- 8B10 ACP_?? Sent after 8080 and contains the filename. TCP File transfer starts after reply
- 8B20 ACP_?? Sent after TCP file transfer
- LSP Responses
- C020 ACP_Discover_Reply
- COAO Reply of 80A0
- CA10 ACP_CMD_Reply
- CB10 ACP_??_Reply 8B10
- CB20 ACP_??_Reply 8B20
- CB21 Sent after CB20. Same format with data changes Update complete?
- KuroBox Commands
- 8020 ACP_Discover
- 8070 ACP_FIRMUP_END
- 8080 ACP_FIRMUP2
- 8090 ACP_Info_HDD
- 8A10 ACP_CMD
- KuroBox Responses
- C020 ACP_Discover_Reply
- Looking at the command word
- Bit 15 = 1
- Bit 14 is 0 for command and 1 for reply
- Bits 11 to 8 appear to be the command class
- Bits 7 to 4 appear to be the command in the class.
- Bits 3 to 0 appear to be a sequence number in the response.
- The updater on the LS-GL receives ziped images and tries to unzip them by testing for the following passwords
- 1NIf_2yUOlRDpYZUVNqboRpMBoZwT4PzoUvOPUp6l
- aAhvlM1Yp7_2VSm6BhgkmTOrCN1JyE0C5Q6cB3oBB
- YvSInIQopeipx66t_DCdfEvfP47qeVPhNhAuSYmA4
- IeY8omJwGlGkIbJm2FH_MV4fLsXE8ieu0gNYwE6Ty
Telnet Access
We have successfully managed to create a telnet-enabled firmware for the LS-GL. Fortunately for us, the LS-GL already came with a telnet binary in the stock firmware. Telnet can be enabled by uncommenting line 42 in /etc/init.d/rcS and repackaging hddrootfs.
There is a pre-made telnet enabled firmware available at here.
Note: The above firmware package does not enable root access. For users that already have root access, this firmware is fine. There is testing being done for a telnet enabled firmware that includes root access. See below. Also, for repackaging the firmware, see Create_a_custom_firmware_image. The current firmware password is:
IeY8omJwGlGkIbJm2FH_MV4fLsXE8ieu0gNYwE6Ty
Removing Root Password
We are currently working on removing the Melco root password in the stock firmware. Some users have managed to do this, but the development team as a whole has not agreed to which method to use.
Manual Method
The general idea is to open connect the sata drive to a desktop running a linux distribution (i.e. Knoppix or Ubuntu). Then remove root password in /etc/shadow.
Detailed Steps
1) Connect the hard drive to a pc running Linux (i.e. Knoppix boots directly from cd/dvd)
2) Find out how it was recognized. (i.e. in Knoppix there are some shortcuts on the desktop).
3) Open a shell/commandline/terminal.
4) Mount the second partition of the sata hdd to somewhere.
5) Delete everything on the partition
6) Download the telnet enabled hddrootfs.img located in this zip
7) Unzip hddrootfs.img...you will be prompted for a password. it is:
IeY8omJwGlGkIbJm2FH_MV4fLsXE8ieu0gNYwE6Ty
8) Untar the resulting file to the second partition:
tar xzvf <file> <path_where_you_mounted_the_second_partition>
9*) mount /dev/sda1 (assuming the sata drive is the first special drive connected on the pc) somewhere
- extract conf_saved.tgz, remove password in etc/shadow to look like:
root::11009:0:99999:7:::
10*) re-tar the contents of conf_saved.tgz, replace conf_saved.tgz to /dev/sda1, umount
(*)These steps still need to be tested further!!!
- Steps originally drafted by mindbender.
Heinz' Method
Heinz made a script to automatically convert a downloaded stock firmware into a telnet enabled firmware with root access. The script is made for the German firmware. The script is available here. Heinz also made a pre-made firmware package with his script. It can be downloaded here.
- Testing Needed
The script mainly does the following things:
- retrieving the actual firmware update from the buffalo site.
- unzip the archive to a tmp directory
- modify linkstation_version, because the updater only updates "newer" firmwares. It seems this can be overwritten in the debug mode (see georg's changes)
- for modifing the installed image. it is unzipped (using the current password)
- then to start the (already installed) telnetd, some comments in the rcS script are removed.
- because the password of the root login is not known, it needs to be removed. Modifing /etc/shadow had not worked, so currently we change the web interface, which runs with root permissions, to do it for us.
- reverse the whole zip/tar process to create a useable firmware update again.
Instructions
Georg's Method
Georg modified Heinz' automatic script. For those with access, the script it is available in LS_Pro Temporary Upload Folder for Telnet Enabled Firmwares
- Testing Needed
Instructions
Toolchains
Cross Toolchain
- Codesourcery for Arm version 2005q3-2 is suggested. Please look at Toolchain from codesourcery for more information.
Todo: Import information from forum.
Native Toolchain
- Yugi has managed to get a working native toolchain. It is available here
Todo: Import information from forum here.
OpenLink
- Development for the LS-GL is too young. Official Openlink development has not started yet.
Oh1jty's Firmware
version 1.03-0.50-jtymod3
- Changelog:
- New debug menu
- Clear root password
- Give shell commands
- Home menu shows mem, load and uptime information
- Features
- Home menu shows mem, load and uptime information
- ssh enabled
- telnet disabled
- rsync enabled (via ssh) for /mnt/disk1
- joe editor added
- wget url fetcher added
- dd_rescue added
- dp500serv Kiss DP-x server added (not on by default, start with /etc/init.d/dp500serv.sh start or add dp500serv.sh to /etc/init.d/rcS)
- full version of ps, w, su, iostat and vmstat added
- Download from
- More info on this firmware
FreeLink
lb_worm has managed to Debanize the LS-GL. Though this is not an official FreeLink yet, it is a tremendous start. See Debian for more information.
Testers are currently needed. The Debian (FreeLink) distrobution can be downloaded at http://downloads.linkstationwiki.net/arm9-LS_Pro/Freelink/ .
Please Note: FreeLink can only be installed manually, not through the LS-GL updater (we'll take care of this soon).
Todo: Import information from forum.
Development Tools
- For the same reasons as OpenLink, development tools has not been created yet.
Other Development
GPL Kernel
lb_worm and jonli_447 are currently working on the kernel project. See Outlook on LS Pro Kernel Development
NFS and USB Printer support modules have been compiled and have been reported to work. The kernel relies on lb_worm's alternative initrd to load.
Todo: Import information from forum.
Custom Updater
See Opensource_Firmware_Updater and LS-GL Custom Updater Thread for more information.
Todo: Import information from the forum here.
IPKG Feed
This is just idea at the moment. See Optware IPKG Feed Poll
Binaries
Some binaries (i.e. wget) have been compiled for the LS-GL.
Please post successfully binaries that should be included in an OpenLink here.
- wget
User Accomplishments
Please post accomplishments that don't fit into the above categories here
- Someone got ssh up and running (sorry, I can't remember who...please give credit if you know).
Related Forum Topics
- Telnet Access
- Native Toolchain
- Codesourcery Toolchain
- Custom Updater
- Kernel Development
- Debian for LS-GL
- OpenLink for LS-GL Debate Poll
- Optware IPKG Feed Poll
Todo: Add information to above sections.