jamie.lentin.co.uk

ASRock ION 330 & Debian Linux

It's a desktop, smaller than my LCD monitor stand.

Hardware

Motherboard

PartMarkings
CPU GPU NIC Audio BIOSIntel Atom 330 NVIDIA ION MCP79MX Realtek RTL8211CL VIA VT1708S MX 25L4005A 4Mx1 CMOS SERIAL FLASH (in removable socket)iSLG9Y Q850A437 (?)?091823 25L 4005APC 12G 3A677000

There is one spare header, a 2x7 (minus a key pin) header marked LPC1.

BIOS Setup

It's worth getting at least v.1.60 of the bios since 1.40 slows down the fan another notch and 1.60 adds the option to turn off the excessively bright blue power LED, as opposed to using tape.

Updating can be done simply by unzipping the DOS files onto a FAT32 USB drive, and pressing F6 in the BIOS. The BIOS can read the drive and find appropriate BIOS images, no need to boot any OS.

If you want to overclock it, this page has some tips (I'm too old for that sort of thing).

Powersaving/ACPI configuration

CPU Frequency Scaling

No speedstep on this Atom, however I read somewhere that windows can control the BIOS' overclocking ability. Wasn't mentioned in OCTuner config though.

Temperature sensors

There are sensors built into the Atom 330 like any core 2 chip, support to read these will be in 2.6.32. Alternative patch floating about

NVClock (from CVS, 2009-09-02) can read the GPU temperature with -T. Mine seems to idle at 57degC.

Fan Control

There is a windows tool OCTuner to control the fan, fortunately it seems to be a very generic tool that can be configed for all sorts of PCs. This is what the config file says about the ION 330:

[FanConfig]
CPUFAN=CPUFANIN0
CHASSISFAN=SYSFANIN

[CPUFANIN0]
Interface=IOBASE
IoPort=0x4934
Multiple=60

[SYSFANIN]
Interface=IOBASE
IoPort=0x4936
Multiple=60
FanCtlPort=0x4932

According to /proc/ioports, the ports map into the SMBus I/O space (which probably makes sense). You get numbers back too:

bunsen:~# perl -le 'sysopen($raw_port,"/dev/port",O_RDWR); foreach my $p (0x4932,0x4934,0x4936) {
sysseek $raw_port,$p,0;sysread $raw_port,$res,2; printf("0x%x: %s\n",$p,unpack("S",$res)*60); }'
# Super"silent" (level 1)
0x4932: 37
0x4934: 5100 (85)
0x4936: 3060 (51)
# Auto (at minimum I think)
0x4932: 37
0x4934: 5100 (85)
0x4936: 3060 (51)
# Normal (level 3)
0x4932: 42
0x4934: 5100 (85)
0x4936: 3720 (62)
# Full Speed (level 5)
0x4932: 47
0x4934: 6600 (111)
0x4936: 5400 (90)

Here is a vaguely simliar tool for an Acer.

Other bits

Sound

Sound is provided by a NVidia HDA chip attached to VIA Vinyl™ VT1708 High Definition Audio Codec and Nvidia MCP7A HDMI Codec. Putting the following in /etc/asoundrc will define easy names for outputs and get ALSA to do software upscaling so all sound formats can be played:

pcm.swmix {
  type dmix
  ipc_key 313 # any unique number here
  slave {
    pcm "monitor"
  }
}

pcm.monitor {
  type plug
  slave {
    pcm "hdmi:NVidia"
    rate 48000
  }
}

pcm.rear_analog {
  type plug
  slave {
    pcm "front:NVidia"
    rate 48000
  }
}

# Alsa defaults
pcm.!default    swmix