Hacking the Neostation 3000

Yet more crappy but informative HTML! I will fix, some time before the heat death of the universe.. Last updated : 2010-06-07. PXE information changed, NetBSD 5.1 dmesg provided.

What is it?

The Neostation 3000 is an AMD Geode based system, with a fanless low power (12W) system with a pentium equivalent processor running at 233MHz. It features a 40 pin IDE connection, a shared PCI (5V)/ISA slot, a single built in USB 1.1 port, two serial ports, a parallel port, an SODIMM slot, an SDRAM (PC133 I believe) slot, SoundBlaster compatible audio of some type and one 10/100 LAN port (Realtek 8139). As such it is (mostly) ideal for embedded use with a number of limitations. In retrospect, I think it's probably a poor choice if you want to run faster than 10Mb and need to use the inbuilt NIC.

Where can you get it?

I got mine from ebay for the grand total of a tenner. Last time this was checked, there were still 51 neostations left (it now says "more than 10") and price is 20 quid but including P&P.

What you can do with the Neostation 3000

It's supposedly a bog standard PC. Unfortunately the BIOS is, to say the least Odd and interrupts are in very short supply

Significant oddities to watch out for are :

  1. The power connector on the NS3000 is a floppy power header. You'll have to solder a custom cable.
  2. The IDE cable must not have any of the pins blanked out, as none of the 40 pins are missing on the IDE header. This is a bit irritating as such cables are now uncommon.
  3. The BIOS is less than optimal about assigning IRQs. There may be an issue getting multiport NICs to work in the spare slot. I haven't bothered with this as multiport NICs are ridiculously expensive, even second hand on ebay.
  4. The inbuilt NIC is a flawed realtek part. It may be 10/100, but running at significantly faster than 10Mb eats interrupt time. See rl(4)
  5. It appears to only be possible to reliably run one device on the IDE interface - IRQ allocation is very poor. Whilst the BIOS supports UDMA, running devices under OpenBSD and NetBSD seems to degrade them to PIO mode 4 or worse. This may be due to old cables, but don't hold your breath (same behaviour on multiple old cables)
  6. The PCI slot is 5 volts and will therefore only accept universal or older cards
  7. The PCI slot is also restricted by the size of the case and the height of a PC133 memory module (if present). Full height cards can be shoehorned in with a certain amount of brute force, but I don't recommend it. I did this with a WinTV PCI card and the system failed after 24 hours on a repeated basis until I took either the memory module or the card out..
  8. The inbuilt lan "supports" PXE. In practice this is very flaky. A gPXE image from the gPXE/Etherboot project will work.
  9. Whilst the BIOS on additional adapter cards will activate, it is very hit and miss whether they can affect the boot process. So far an Adaptec 2940 and two different IDE controllers have failed to affect the boot. If I remember correctly a NIC has though.
  10. It is also very picky about ISA NICs. It doesn't like (refuses to start at all) with Etherlink IIIs and possibly anything else ISA.
  11. Memory appears to be limited to 128MB per slot (one SDRAM, one SODIMM). A 256MB SDRAM chip was recognised as 128MB..
  12. The disk geometry reported by certain disks/compact flash in a converter may be odd/wrong. Beware!

On the positive side, it will run NetBSD or OpenBSD without too many problems and the USB port will happily work - although obviously a USB NIC will be restricted to well under 10Mb in practice..

I want to hack it, are there some docs?

Yup, see Geode GX1 specification (PDF). It's also worth looking at the CS 5530 companion chipset reference (PDF).

Bear in mind that the specification appears to be inaccurate. It insists that it supports 3.3V PCI, whilst the slot in the Neostation 3000 is most definitely 5V.

A CPUID from within NetBSD Returns : Cyrix MediaGXtm MMXtm EnhancedTLB: 32 entries 4-way associative 4KB pages. L1 Cache: 16KB 4-way associative 16 bytes/line

Processor features are : RDMSR/WRMSR (Model Specific Registers), COMPXCHG8B, CMOV, MMX/Extended MMX, Family: 5 Model: 4 [6x86/GXm], FPU, Time stamp counter, Cyrix MSR, FPU CMOV

Supported Compact Flash cards - be careful

So far, I haven't tried real hard drives on the system, although there's no reason why they shouldn't work - probably. As regards to compact flash things are a little more awkward. It could be due to the BIOS (probable), the compact flash card (also possible) or the compact flash to IDE adapter I used (unlikely) but the number of supported CF cards is not unlimited

I've had good results with both 1GB and 8GB Dane Elec compact flash cards. 4GB Lexar CF cards do not work - the disk geometry reported by the Neostation and the USB media reader on my main system is completely different. I'll have a go at fixing this, but so far I have had no success. If you want to be safe, grab some Dane Elec. Please also let me know if you find more cards that work!

  • Another website says that the main issue with running a CDROM and hard drive simultaneously is that they must be run off the same power supply, and the power must be external as the Neostation is limited in that regard
  • Installing an operating system?

    The main problem here is the almost complete inability of the system to run more than one IDE device at the same time, and the very flaky nature of the PXE support, even if you try using Etherboot

    If there's no IDE drives on the connector, the PC will boot off the Disk On Chip (DOC). If there is a drive, but there is nothing on it, the system will not fall back to the DOC.

    OpenBSD

    OpenBSD works fine on the Neostation 3000 subject to only recognising a maximum of 64MB RAM. I used Flashdist to write an image to a 1GB compact flash for operation as an embedded firewall.

    I believe it should be possible to install OpenBSD directly onto compact flash using a CDROM drive on the built in IDE and an IDE card in the PCI slot. OpenBSD will step down from UDMA to PIO 4 or worse and carry on working

    See the dmesg.

    I have not tried X on OpenBSD

    NetBSD 5.0

    NetBSD works fine and sees all installed memory, but suffers from a number of installation caveats. Earlier releases did not cope well with stepping down from UDMA to PIO4, although later releases seem to have improved this.

    Basically the three options are 1) hack NetBSD or a miniroot onto a compact flash/disk from another machine. Boot from that. 2) Brave unreliable PXE or 3) install an additional IDE card, boot a CDROM off the inbuilt IDE and CF on the additional IDE

    If you take the additional IDE option it may be a very bad idea to use the CDROM for installing the operating system sets (i.e. only use it for the initial boot). If you do try it, it might cause a kernel panic - the code might have fixed this now, but I haven't tried by anything other than a bsd.rd update via FTP, since the initial install.

    I have also now managed to install via PXE. This requires another Unix box with ISC DHCPD, a TFTP server and a PXE server, plus the following bits in dhcpd.conf

    host myhostname {
        hardware ethernet 00:01:02:03:04:05;
        option domain-name-servers 1.2.3.4;
        fixed-address 192.168.x.x;
        option routers 192.168.x.x;
        option domain-name "mydomain.com";
        option subnet-mask 255.255.255.0;
        if substring(option vendor-class-identifier,0,20)="PXEClient:Arch:00000" {
         if option dhcp-max-message-size="\x04\xEC" {
          filename "/gpxe.bin";
         } else {
            filename "/pxeboot_ia32.bin";
         }
    } elsif substring (option vendor-class-identifier,0,17)="NetBSD:i386:libsa" {
          filename "tftp:/netbsd";
        } else {
          filename "tftp:/netbsd";
        }
        next-server 192.168.x.x;
        option root-path "/tftpboot";
    

    In the above, the next-server is the IP of the TFTP server and gPXE.bin is a gPXE image for the realtek 8139. The maximum DHCP message size differs between the inbuilt crappy PXE ROM, and the gPXE supplied ROM. Using this method NetBSD will install, but is very very slow to do so. You will wonder if it has hung.

    X server does not work - the screen goes black. Raster console (VGA_RASTERCONSOLE in kernel config) also does not work - don't use it.

    I/O seems a bit slow, owing to the IDE controller. Then again, I am also using a compact flash card.

    Interrupt sharing is crap. To get USB working edit usr/src/sys/dev/pci/geodeide.c and set sc->sc_wdcdev.sc_atac.atac_nchannels = 1. This will only enable one interrupt on the IDE controller, leaving a spare one for USB.

    See NetBSD 5.1 RC2 dmesg (prior to hacking to restrict to one IDE channel).

    Others

    Not tried yet. I suspect XP or Windows 2000 will work fine. This Youtube link seems to indicate XP works. Will try Linux at some point and possibly Plan9. Any other suggestions (QNX?) welcome.

    Uses for the Neostation

    Other than its primary purpose as a thin client - a task it achieves well, I am currently using my two neostations as a firewall and a low power Unix shell box. Any other ideas are welcome. It has not escaped my notice that it's potentially viable as a media server of some type.

    It's worth bearing in mind, of course, that as the number of neostations increase it may be easier to get a cheap Core2Duo system and run lots of servers or virtualisation on it. It would also be considerably faster.

    Alternatives to the Neostation

    Initially I was running a Sparcstation 10. Unfortunately whilst this has a vastly superior BIOS to the neostation and *proper* serial console support, it suffers from being old, slow, noisy, uses narrow SCSI disks, consumes about four times as much power and only supports quad 10Mb Ethernet cheaply (quad fast Ethernet is silly money). In these days of 24Mb (if lucky) ADSL2, a lot of older kit simply isn't viable any more.

    There are Winterms, which I was considering trying to hack OpenBSD onto - check here for Linux on Winterm hacking. However, they're mostly also less expandable and much harder to hack, with the exception of some of the Compaq T30s which I believe are literally also a BIOS and IDE type system. I gave up on this as they're usually PC Card based, and 10/100 PC Card devices tend not to be that fast

    There are VIA Eden or similar systems. These are usually vastly more expensive than a Neostation

    An old 486 might do in same cases, but is still unlikely to be that low power, will mostly be ISA based with possible forays into early PCI (nasty) or even worse, Vesa Local Bus (cards now rare). They're also mostly horribly slow with hideously out of date BIOSes you have to fight. Remember 8GB was a huge disk at the time. Network cards that reliably deliver over 10Mb are also uncommon, making it tricky to cope with fast ADSL or LAN connections.

    Any more advice, comments, please address to peter of the domain of syllopsium in the land of com

    Back to the site root