OQO Driver

  

It's a very little, full featured PC.

  1. Oqo Model 02 Drivers
  2. Oqo Driver
  3. Oqo 01 Drivers

Free drivers for OQO model 01+. Please select the driver to download. Additionally, you can choose Operating System to see the drivers that will be compatible with your OS. The OQO firmware also recognises a pile extra Fn-Ctrl commands, as mentioned here and here. NB: an OQO 01+ needs Ctrl pressed as well as Fn for most of these to work. Trackpoint and Jog-wheel. The trackpoint & jogwheel works either with the trackpoint driver or the generic wheel mouse driver.

The following page details some of the weirder bits you'd encounterwhilst installing Debian (or another linux) on the OQO. If you need amore general guide on installing Debian, then I suggest goingelsewhere first and come back for specifics.

Hardware

Replacing HDD

The HDD is a 1.8' Toshiba PATA disk, the same used in larger iPods.The connector is a Toshiba-specific 50-pin connector, as pictured onthe left-hand side here. NB: It isnot a ZIF connector, nor is it of the type in IBM X-series thinkpads.Removing these terms from ebay searches is quite useful.

  • IDE/Compactflash adapter & CF Card (what I did). Adaptor listed as'SSD CF TO 50 PIN IDE Adapter Card W/ 1.8 box' on ebay NB: Most CFcards dont bother with (U)DMA in AT disk mode. Sandisk Ultra IV'sdefinitely do, but at a price.
  • PATA 1.8' SSD: Pricey, rare, but exist.

The operation itself is reasonably simple:-

  1. Ensure all BIOS HDD performance options (transfer mode, etc) areturned down to standard. Mileage may vary, but some CF cards will notbe detected, or the OQO will refuse to boot with, e.g. DMA on. Linuxwill renegotiate properly anyway so not worth the hassle.
  2. Remove battery & stylus, undo three torx screws (including warrantystickered one) with T6 driver. Cover should wiggle off.
  3. Unwrap blue rubber protector from HDD.
  4. Gently pull HDD from connector.

BIOS Setup

To enter the BIOS, press F2 (this is Fn then 2). Not much setup to do,although you have to tweak the boot order to be able to boot off USBkey and install.

You can also switch which of the antennae (the lumps on the side ofthe case) is active.

Installation

Booting

The only tricky part of getting the install process going is bootingthe device, since it's PC-BIOS and no handy CD drive.

  • via. USB key: Put 'CD-ROM'(sic) early in BIOS' boot order, andattach a bootable USB stick
  • PXE Booting: This should be possible usng the docking cable ethernettoo, not tried myself.

Any other steps will be the same as a normal computer.

Kernel

I'm using the mainline kernel (as of writing 2.6.30), various patchesand config options are mentioned below, but this is the full .config, and all the patches can be found here. Hopefully in time most will become irrelevant.

GRUB

Whilst it works out of the box fine, I'd suggest making the defaultitem in the list 'Turn off again' so if the power button gets whackedin your pocket, no harm should be done. GRUB cannot turn the deviceoff, so use Linux:

Graphics configuration

Xorg - siliconmotion

xserver-xorg-video-siliconmotion version 1.7.1 fully supports thedevice, including dualheading & rotation. Try the following config:

xrandr should provide you with rotation and dualheading, I have thefollowing script attached to my 'video' key, screenrotate, whichswitches orientation as well as switching jogwheel direction and wacomrotation at the same time:-

Linux console

No native framebuffer driver for the siliconmotion chip, so it'd haveto be a VESA driver. This I haven't tried, however you can get a textconsole filling the screen with the following kernel option:-

Powersaving/ACPI configuration

CPU Frequency Scaling

Transmeta chips do this using their LongRun feature. Unlike otherchips the frequency variation happens automatically---you choose aminimum & maximum frequency which the crusoe will jump betweenaccording to workload. The range can be set via. sysfs:-

Halving the maximum frequency will result in the device running a lotcooler. For more info, and to change the frequency profile, use thelongrun userspace tool.

Sleep States

As of 2.6.28.8, S3 works fine. Earlier versions would crashrepeatedly, and then sometimes sleep. Do:-

uswsusp also works fine with recent kernels. Since the HDD isrelatively slow, setting the image to be as small as possibleincreases hibernate speed dramatically. In /etc/uswsup.conf:-

Kernels < 2.6.30 couldnt halt the device, see bug 13041. The EC accesswithin the OQO DSDT's _GTS method has no hope of working, but windowsdoesn't test this. Newer kernels no longer call _GTS by default.

Input devices

Keyboard

The keyboard tries to be a standard PS/2 keyboard, but fails inseveral places.

The Video/Mute/WiFi keys report a different scancode when they mean tosay the key is being released---this is fixed by this patch which is found in2.6.32 onwards.

PgUp/PgDn/Home/End are mapped to numeric keypad keys, not PgUp, etc.This generally works fine, but shift-PgUp results in '9', rather thanscrolling upwards in an xterm/console/whatever. The keymap oqo.kbdmap can be applied to help both the above using input-kbd(aptitude install input-utils). I trigger the running using udev andthe following rule:-

Unmarked firmware key-combinations

The OQO firmware also recognises a pile extra Fn-Ctrl commands, asmentioned here and here. NB: an OQO 01+needs Ctrl pressed as well as Fn for most of these to work.

Trackpoint and Jog-wheel

The trackpoint & jogwheel works either with the trackpoint driver orthe generic wheel mouse driver. The former gives you press-to-selectand other trackpoint-specifics, the latter wheel events. Linux loadstrackpoint by default, to suppress this edit / create a/etc/modprobe.d/oqo_hw.conf containing :-

NB: Initalising wheel mouse mode, then trackpoint mode results ina confused driver. It's possible that this would give full trackpointsupport, but would mean a lot of changes to linuxes trackpoint driver.

Touchscreen

The touchscreen is a Wacom tablet sitting on /dev/ttyS0. This can beaccessed via X11 using the following config:-

The touchscreen will also support erasers, etc., but the default pendoesn't have them. Config would be the same as any wacom tablet if youwanted it.

To calibrate, you need to provide values for the screen corners.Outside X11, use wacdump -f tpc /dev/ttyS0 to get X/Y co-ordinatesfor the screen corners, and add to the tablet section thus:-

Accelerometer

According to OQOTalk, this isa 'STMicroelectronics LIS3L02AQ Inertial Sensor ('LIS3L02AQ','HAAAH1N','KOR 434','E AFAF')'. It seems to be attached to the ADC inputs ofthe embedded controller. Apply ec_dump.patch and you will see 4 bytesat 0x20 changing as you wobble the device, possibly 0x2A and 0x2B too.According to the EC datasheet, the ADC measures in 10-bit resolution.

Network configuration

Bluetooth

The bluetooth behaves like a regular USB dongle attached to theinternal USB bus---should just work out of the box.

Firewire

Again, nothing unusual, just works.

Wi-fi - non WPA

The Wi-Fi is an Amtel 505a on an internal USB bus. There are currently3 drivers available for it

To use at76c50x-usb, you will also need some firmware. install thenon-free atmel-firmware package or go tohttp://thekelleys.org.uk/atmel/.Given this, it should largely work out of the box.

Wi-fi - WPA

In theory, at76c50x-usb should be able to do WPA encryption insoftware. However, the driver stops receiving frames at the Group keyexchange stage. Is the firmware expecting to be able to decrypt them,and since it can't, ignoring them?

The official Atmel driver contains firmware (the 1.3 versions) in .hfiles that can do WPA in hardware. Experimental supportfor these firmwares was added to at76_usb, ported to at76c50x-usbwithout success. The port was also untested on a 505a anyway, so mayneed more work.

Other bits

Real-Time Clock

The realtime clock will currently not work via the kernel, you need touse the --directisa option (add to HWCLOCKPARS in/etc/init.d/hwclock*)

This may be a result of ` HPET/RTC <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=277298>`__ fights. Disabling HPET supportshouldn't be harmful since there isn't one.

TSC clocksource

There is no HPET timer on the device (a fact that powertop whinesabout profusely), however the following patch seems to give you astable TSC to use. I'm not sure how useful this is in comparison toHPET, or how safe it is.

Hardware watchdog

The M7101 PMU has a built-in hardware watchdog---its the same chip asused in the Sun Netra T1. What use it is on the OQO, I've no idea. Butthats not the point :)

OQO Internals

Back in the day there was an OQOTalk post on the IC's used in the device. Itsaid:

Anyway, I've managed to identify most of the parts I wasinterested in so I thought I'd list them here in case anyone else isinterested, now or in the future. Note that this is a model 01+. Someof these markings are very small and/or faint, so it is possible thatI misread some characters. The Bluetooth is provided by a CSR(www.csr.com) chip with the markings 'BC219', '159BL','447AB'. Thereseem to be two supporting chips. One appears to be marked 'LW083A','TI4AW','210L' and the other 'SH1202','3c096' (with the 'c' circledmaking a copyright symbol),'4304'. The mainboard is marked'PCB-9051-03-rev01'. A few components are mounted on the back of theboard, but they are only visible after the WLAN board and fan assemblyare removed. Right behind the scroll wheel is a CY22393 (marked'CY22393FC','0531 A 02','636095'), which is a 'Three-PLL Serial-Programmable Flash-Programmable Clock Generator' capable of generatingclock signals up to 200MHz. Near that is an ICS-branded chip marked'CN420744A','0446','9248AG-192' and then the NEC µPD720101 USB 2.0host controller (markings: 'D720101F1','0529PUA08'). The TransmetaCrusoe CPU is also on this side of the board. Its markings are'5800N100021','301251','101568','0515','6507F -3','D10128.99'. Partsvisible once the panel under the screen is removed include the ALiM1535+ ('M1535+ A1','0444 TH07','XHH2QY00000F'), The Lynx3DM8+('SM722G8 AB 0436','MHL07 AF3FS','L F6DC'), and a NationalSemiconductor PC87591E ('2S442AB','cmNSC2000C2','PC87591E-VLB') LPCMobile Embedded Controller. There is also an STMicroelectronicsLIS3L02AQ Inertial Sensor ('LIS3L02AQ','HAAAH 1N','KOR 434','E AFAF'),which I assume is how the OQO detects 'freefall' so it can shut offthe hard drive. Finally, the battery that keeps the clock running is aSanyo ML614 (3V 3.4mAh rechargeable Lithium, 1.4mm high, 6.8mmdiameter).

Link-o-rama

  • OQO 01+ graveyard: Sincethis is pretty much the only OQO site left, I've archived a bunch ofstuff found in my old work directoies here.

Pretty much all of these links are dead now:

It's a very little, full featured PC.

The following page details some of the weirder bits you'd encounterwhilst installing Debian (or another linux) on the OQO. If you need amore general guide on installing Debian, then I suggest goingelsewhere first and come back for specifics.

Hardware

Replacing HDD

The HDD is a 1.8' Toshiba PATA disk, the same used in larger iPods.The connector is a Toshiba-specific 50-pin connector, as pictured onthe left-hand side here. NB: It isnot a ZIF connector, nor is it of the type in IBM X-series thinkpads.Removing these terms from ebay searches is quite useful.

  • IDE/Compactflash adapter & CF Card (what I did). Adaptor listed as'SSD CF TO 50 PIN IDE Adapter Card W/ 1.8 box' on ebay NB: Most CFcards dont bother with (U)DMA in AT disk mode. Sandisk Ultra IV'sdefinitely do, but at a price.
  • PATA 1.8' SSD: Pricey, rare, but exist.

The operation itself is reasonably simple:-

  1. Ensure all BIOS HDD performance options (transfer mode, etc) areturned down to standard. Mileage may vary, but some CF cards will notbe detected, or the OQO will refuse to boot with, e.g. DMA on. Linuxwill renegotiate properly anyway so not worth the hassle.
  2. Remove battery & stylus, undo three torx screws (including warrantystickered one) with T6 driver. Cover should wiggle off.
  3. Unwrap blue rubber protector from HDD.
  4. Gently pull HDD from connector.

BIOS Setup

To enter the BIOS, press F2 (this is Fn then 2). Not much setup to do,although you have to tweak the boot order to be able to boot off USBkey and install.

You can also switch which of the antennae (the lumps on the side ofthe case) is active.

Installation

Booting

The only tricky part of getting the install process going is bootingthe device, since it's PC-BIOS and no handy CD drive.

OQO Driver
  • via. USB key: Put 'CD-ROM'(sic) early in BIOS' boot order, andattach a bootable USB stick
  • PXE Booting: This should be possible usng the docking cable ethernettoo, not tried myself.

Any other steps will be the same as a normal computer.

Model

Kernel

I'm using the mainline kernel (as of writing 2.6.30), various patchesand config options are mentioned below, but this is the full .config, and all the patches can be found here. Hopefully in time most will become irrelevant.

GRUB

Whilst it works out of the box fine, I'd suggest making the defaultitem in the list 'Turn off again' so if the power button gets whackedin your pocket, no harm should be done. GRUB cannot turn the deviceoff, so use Linux:

Graphics configuration

Xorg - siliconmotion

xserver-xorg-video-siliconmotion version 1.7.1 fully supports thedevice, including dualheading & rotation. Try the following config:

xrandr should provide you with rotation and dualheading, I have thefollowing script attached to my 'video' key, screenrotate, whichswitches orientation as well as switching jogwheel direction and wacomrotation at the same time:-

Linux console

No native framebuffer driver for the siliconmotion chip, so it'd haveto be a VESA driver. This I haven't tried, however you can get a textconsole filling the screen with the following kernel option:-

Powersaving/ACPI configuration

Oqo Model 02 Drivers

CPU Frequency Scaling

Transmeta chips do this using their LongRun feature. Unlike otherchips the frequency variation happens automatically---you choose aminimum & maximum frequency which the crusoe will jump betweenaccording to workload. The range can be set via. sysfs:-

Halving the maximum frequency will result in the device running a lotcooler. For more info, and to change the frequency profile, use thelongrun userspace tool.

Sleep States

As of 2.6.28.8, S3 works fine. Earlier versions would crashrepeatedly, and then sometimes sleep. Do:-

uswsusp also works fine with recent kernels. Since the HDD isrelatively slow, setting the image to be as small as possibleincreases hibernate speed dramatically. In /etc/uswsup.conf:-

Kernels < 2.6.30 couldnt halt the device, see bug 13041. The EC accesswithin the OQO DSDT's _GTS method has no hope of working, but windowsdoesn't test this. Newer kernels no longer call _GTS by default.

Input devices

Keyboard

The keyboard tries to be a standard PS/2 keyboard, but fails inseveral places.

The Video/Mute/WiFi keys report a different scancode when they mean tosay the key is being released---this is fixed by this patch which is found in2.6.32 onwards.

PgUp/PgDn/Home/End are mapped to numeric keypad keys, not PgUp, etc.This generally works fine, but shift-PgUp results in '9', rather thanscrolling upwards in an xterm/console/whatever. The keymap oqo.kbdmap can be applied to help both the above using input-kbd(aptitude install input-utils). I trigger the running using udev andthe following rule:-

Oqo Driver

Unmarked firmware key-combinations

The OQO firmware also recognises a pile extra Fn-Ctrl commands, asmentioned here and here. NB: an OQO 01+needs Ctrl pressed as well as Fn for most of these to work.

Trackpoint and Jog-wheel

The trackpoint & jogwheel works either with the trackpoint driver orthe generic wheel mouse driver. The former gives you press-to-selectand other trackpoint-specifics, the latter wheel events. Linux loadstrackpoint by default, to suppress this edit / create a/etc/modprobe.d/oqo_hw.conf containing :-

NB: Initalising wheel mouse mode, then trackpoint mode results ina confused driver. It's possible that this would give full trackpointsupport, but would mean a lot of changes to linuxes trackpoint driver.

Touchscreen

The touchscreen is a Wacom tablet sitting on /dev/ttyS0. This can beaccessed via X11 using the following config:-

The touchscreen will also support erasers, etc., but the default pendoesn't have them. Config would be the same as any wacom tablet if youwanted it.

To calibrate, you need to provide values for the screen corners.Outside X11, use wacdump -f tpc /dev/ttyS0 to get X/Y co-ordinatesfor the screen corners, and add to the tablet section thus:-

Accelerometer

According to OQOTalk, this isa 'STMicroelectronics LIS3L02AQ Inertial Sensor ('LIS3L02AQ','HAAAH1N','KOR 434','E AFAF')'. It seems to be attached to the ADC inputs ofthe embedded controller. Apply ec_dump.patch and you will see 4 bytesat 0x20 changing as you wobble the device, possibly 0x2A and 0x2B too.According to the EC datasheet, the ADC measures in 10-bit resolution.

Network configuration

Bluetooth

The bluetooth behaves like a regular USB dongle attached to theinternal USB bus---should just work out of the box.

Firewire

Again, nothing unusual, just works.

Wi-fi - non WPA

The Wi-Fi is an Amtel 505a on an internal USB bus. There are currently3 drivers available for it

To use at76c50x-usb, you will also need some firmware. install thenon-free atmel-firmware package or go tohttp://thekelleys.org.uk/atmel/.Given this, it should largely work out of the box.

Wi-fi - WPA

Oqo 01 Drivers

In theory, at76c50x-usb should be able to do WPA encryption insoftware. However, the driver stops receiving frames at the Group keyexchange stage. Is the firmware expecting to be able to decrypt them,and since it can't, ignoring them?

The official Atmel driver contains firmware (the 1.3 versions) in .hfiles that can do WPA in hardware. Experimental supportfor these firmwares was added to at76_usb, ported to at76c50x-usbwithout success. The port was also untested on a 505a anyway, so mayneed more work.

Other bits

Real-Time Clock

The realtime clock will currently not work via the kernel, you need touse the --directisa option (add to HWCLOCKPARS in/etc/init.d/hwclock*)

This may be a result of ` HPET/RTC <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=277298>`__ fights. Disabling HPET supportshouldn't be harmful since there isn't one.

TSC clocksource

There is no HPET timer on the device (a fact that powertop whinesabout profusely), however the following patch seems to give you astable TSC to use. I'm not sure how useful this is in comparison toHPET, or how safe it is.

Oqo driver

Hardware watchdog

The M7101 PMU has a built-in hardware watchdog---its the same chip asused in the Sun Netra T1. What use it is on the OQO, I've no idea. Butthats not the point :)

OQO Internals

Back in the day there was an OQOTalk post on the IC's used in the device. Itsaid:

Anyway, I've managed to identify most of the parts I wasinterested in so I thought I'd list them here in case anyone else isinterested, now or in the future. Note that this is a model 01+. Someof these markings are very small and/or faint, so it is possible thatI misread some characters. The Bluetooth is provided by a CSR(www.csr.com) chip with the markings 'BC219', '159BL','447AB'. Thereseem to be two supporting chips. One appears to be marked 'LW083A','TI4AW','210L' and the other 'SH1202','3c096' (with the 'c' circledmaking a copyright symbol),'4304'. The mainboard is marked'PCB-9051-03-rev01'. A few components are mounted on the back of theboard, but they are only visible after the WLAN board and fan assemblyare removed. Right behind the scroll wheel is a CY22393 (marked'CY22393FC','0531 A 02','636095'), which is a 'Three-PLL Serial-Programmable Flash-Programmable Clock Generator' capable of generatingclock signals up to 200MHz. Near that is an ICS-branded chip marked'CN420744A','0446','9248AG-192' and then the NEC µPD720101 USB 2.0host controller (markings: 'D720101F1','0529PUA08'). The TransmetaCrusoe CPU is also on this side of the board. Its markings are'5800N100021','301251','101568','0515','6507F -3','D10128.99'. Partsvisible once the panel under the screen is removed include the ALiM1535+ ('M1535+ A1','0444 TH07','XHH2QY00000F'), The Lynx3DM8+('SM722G8 AB 0436','MHL07 AF3FS','L F6DC'), and a NationalSemiconductor PC87591E ('2S442AB','cmNSC2000C2','PC87591E-VLB') LPCMobile Embedded Controller. There is also an STMicroelectronicsLIS3L02AQ Inertial Sensor ('LIS3L02AQ','HAAAH 1N','KOR 434','E AFAF'),which I assume is how the OQO detects 'freefall' so it can shut offthe hard drive. Finally, the battery that keeps the clock running is aSanyo ML614 (3V 3.4mAh rechargeable Lithium, 1.4mm high, 6.8mmdiameter).

Link-o-rama

  • OQO 01+ graveyard: Sincethis is pretty much the only OQO site left, I've archived a bunch ofstuff found in my old work directoies here.

Pretty much all of these links are dead now: