STAR9104: Linux Kernel 2.6.29 and Starting FreeBSD port

I’ve finally updated my patch to 2.6.29, the patch can be downloaded from:

and the config file:

or if you want the image that i already compiled and test (image is compiled with 32 MB memory). This is NOT a FIRMWARE

when i have the time, i will work on creating a new firmware image.

Some changes:

  • The machine ID is now registered in
  • The network problem instability has now been fixed
  • Added new configuration option to select memory size based on your board memory (16, 32, or 64 mb). Note: selecting values larger than the supported size will cause crash.

The other news is that Bruce M Simpson has donated me an Emprex NSD 100 for porting FreeBSD to it. I have started my work, but the progress will be slower from the Linux at the beginning, because:

  1. I am more familiar with Linux kernel compared to FreeBSD kernel
  2. Currently FreeBSD kernel itself doesn’t support many ARM devices yet, so to find an exmple of something I need to look at NetBSD, (and it helps, for example the Faraday 526 processor support is already in NetBSD).
  3. I am rather busy this and coming month (planning to go to Indonesia for about 10 days)

Update – Debian on Agestar Firmware

Warning/Note: This is not an update to the existing firmware. This is for installing Debian. If you don’t know anything about Linux, this is not for you. This firmware DOES NOT contain web interface.

I haven’t looked again on Debian installer for Agestar, but I have built a new firmware for Debian on Agestar using the latest kernel patch (faster network). If you have installed Debian using the instruction in here, you can download zImage-20092008 to Agestar, and then do:

dd if=zImage-20092008 of=/dev/mtdblock1

If you haven’t installed Debian, then when following the instruction, but instead of using star.bin use star-20092008.bin. To make it clear, use zImage-20092008 to update existing installation, and star-20092008.bin for new installation (starting from the original Agestar firmware). If you made a mistake, then you need a serial port to unbrick your Agestar. NOTE: the web update method only works on agestar, other models can work by using serial port and latest patch for kernel source (2.6.29 or later).

If you are interested to make your own firmware, this is what you should do:

  1. Download armboot.bin and put it to a directory
  2. Download mergefile.c to the same directory as armboot.bin
  3. Compile mergefile.c (just do cc mergefile.c -o mergefile)
  4. Compile your kernel according to the instruction at to create zImage, copy/move it to the same directory as armboot.bin
  5. Type ./mergefile to merge armboot.bin and zImage to star.bin.

You can use star.bin to flash (replace) original firmware. If you already installed Debian, and you want to update your kernel, you only need to build zImage and do dd if=newzImage of=/dev/mtdblock1.

Installing Debian on Agestar without serial port

I have prepared a firmware and tutorial to Install Debian here, this time without the need for serial port. I have tested this, and it seems that everything works. But of course I will not be responsible if anything happens. If you think there are some missing, unclear or inaccurate steps, or if you doubt about something, then don’t install it. If you have anything to ask just email to yohanes [at], or just post your questions as comments.

NOTE: the web update method only works on agestar ncb3ast, other models can work by using serial port and latest patch for kernel source (2.6.29 or later).

New Firmware Progress

My wife agrees that I can buy another Agestar to hack and use the other one for our network storage. With this new Agestar I can continue my hacks. Currently I am working on building a firmware that can be used to install Debian without serial port. On the first stage, I will build a generic firmware without automatic installer, so the user still needs to do some manual steps to install Debian. So it is something like the manual Debian install on NSLU2 (  Actually because this is generic command line, you would be able to install Gentoo or something else. The next step would be to make an automatic installer like in NSLU2(

The main reason why I started with manual installer is because I am not yet familiar with the Debian installer. Currently the manual installer is almost complete, I just need to test it thoroughly to make sure that this will really works without serial port. I hope I can release this in the next few days (or this weekend at the latest).

Network Driver Problem Solved

I ported STAR 9100 network driver without a documentation, I just blindly use the old driver and modify it to fit with all of the changes in the networking stuff since kernel 2.4.27. The driver claims to support scatter/gather I/O, but there is no implementation of scatter gather I/O in the hard_start_xmit function. I don’t know whether this device supports it or not, so I just change this line:

dev->features |= NETIF_F_SG|NETIF_F_IP_CSUM

to this:

dev->features |= NETIF_F_IP_CSUM

And now the sendfile function works (although it would be faster if the driver supports scatter/gather IO).

Debian Installation

This is the latest patch (add NAPI to the network driver):

I have uploaded the instruction on how to install Debian on Agestar NCB3AST at:

I am also testing exposing my Agestar NCB3AST to the world, I have installed a web server on my device. The same information above can be accessed at:

Please note that the later URL may not always available. First, my bandwidth is limited, and second, sometimes I still develop and/or test something on it that needs restarting the device.

Debian Etch on Agestar NCB3AST

Powered By DebianFirst the bad news: the network driver in the new kernel is not performing very well, if i remember correctly, this is about twice slower than the original kernel. The maximum speed is around 2.75 mb/s for FTP , 1.4-1.50 mb/s for SAMBA, and 618 kb/s for SSHFS. I have tried implementing NAPI (I will upload the patch soon), but it doesn’t help very much. I have tried to optimize the kernel settings, but no luck so far.

Now, the good news: I have been able to install Debian Etch for ARM in my Agestar using the instruction in here: Of course there are differences in booting, and configuring stuff, but the steps to produce the root file system are the same. I have also managed to write new kernel to the flash (by using dd if=bootpImage of=/dev/mtdblock1), so now my agestar will go directly to Debian when i turned it on.

I will clean up the code, and write the instruction on how to install Debian this weekend.

Wake On LAN

I have two computers at home connected to my WRT54GL (a variant of WRT54G) through cables. Using SSH i can easily shut down my computer, and using Wake On Lan, I can wake them up again when I need them. Here are some of my notes after setting up the wake on LAN:

  1. You need to activate wake on LAN feature in the BIOS.
  2. You need to set your network card to wake on LAN using ethtool. This command needs to be inserted to your startup/network script, because in each restart you will need to set it again.
  3. Some network card will wake using the program wol, but some must use etherwake.
  4. Wake on LAN only works in cable/wired connection (wireless connection will not work).

Switching from Fedora to Debian

Fedora is good, and gets updated every 6 months, but sometimes I think it is too fast for me. In every new version, they will change some daemon that breaks a lot of things that I have painfully set up in the previous version. After thinking about it, I try to use Debian. After few weeks using it, I already felt comfortable with it. I am also happy because I found a nearby Debian mirror in Thailand ( which is very fast to access from my home. Here are some things that you may need to know about debian:

Network configuration is at /etc/network/interfaces
Some useful apt-get commands are:
- apt-get install packagename
- apt-get remove packagename
- apt-get clean (otherwise you will use a large disk space for package cache)

some useful dpkg commands:
- dpkg -l to list all installed packages
- dpkg -L packagename to list files in that package
- dpkg -S /path/to/file to check to which package that file belongs

Another useful command is update-alternatives to update alternatives for a program (use this after installing java, etc)

I found a link about someone asking for Debian tips (he is a FreeBSD guy), and the answers he gets is quite good, I think the answers are applicable to anyone switching from another Unix or another Linux distro to debian):