Drivers and tweaks

(changelog)

Status

Centrino Chipset works
Audio works
Video/Graphics works
DRI needs config
External LCD needs config
Video out needs config
Xinerama/Multi-screen works
Touchpad works
10/100 network works
Fax-modem needs config
Special keys needs config
Bluetooth mostly works
PCMCIA untested
ACPI mostly works
ACPI battery works
ACPI sleep not working
SWSUSP needs config

Problems requiring assistance


General

Kernel 2.6 works like a dream for the most part. Many of the laptop's devices are deteted automatically, with few additional drivers required.

In addition to my Debian GNU/Linux installation report, Jukka Ketelaars has published information on using the nx7010 with Fedora which may also provide hints to those using the GNOME desktop, and Jürgen Fuhrmann has published his experiences with SUSE.

Centrino Chipset

This processor is well-behaved under Linux, offering good performance and excellent battery life. Using the module speedstep-centrino and a CPU governor like cpufreqd, it is quite easy to get around 4 1/2 hours or more battery-life.

Audio

Works fine with the following setup:

Video/Graphics

Well behaved 2D and 3D graphics may be obtained using the proprietry ATI Radeon drivers. An rpm package is available from ATI. It can be installed using alien and dpkg, although please note this warning about doing this so that the package management does not get broken.

XFree 4.3.x also has native support for this chipset built-in -- it works quite nicely with good DRI in single head mode and good 2D rendering in Xinerama mode. (Others have reported that changing the ChipID in XFree86Config-4 may be necessary to get this to work. Untested by me.)

LCD

Settings that appear to work for the LCD are: vertical refresh range: 50 - 75 Hz, horizontal refresh range: 28 - 96 kHz. The 15.4" LCD is capable of displaying at 1680&mult;1050. (These settings discovered by Knoppix 3.2 and used in my XF86Config-4.)

External CRT/Projector

Using the CRT toggle button (Fn+F4) doens't work with the XFree86Config-4 generated earlier. If you use Ctrl+Shift+Fn+/ (i.e. the usual Ctrl+Shift+Num_+ key sequence) to toggle the screen resolution, the CRT toggle works, but with the oversize virtual desktop. This is probably not useful for a data projector/beamer for giving presentations.

The RandR extensions (man xrandr) allow dynamic resizing of the X session. Up until a recent update of my KDE, the root window would remain the same size so the KDE kicker etc were then inaccessible. This seems to be solved now! So all you (should) have to do is have an XF86Config-4 file that lists the external monitor with a range of refresh rates and sizes, operating in clone mode (xinerama mode is a problem, see below) and use xrandr (or the KDE systray applet for it) to step through resolutions and refresh rates until it works.

More details about using a data projector/beamer with a projector are available.

TV out

S-Video PAL works with the proprietary ATI drivers (fglrx) quite well, either in a clone mode or dual-head with two windows managers (XF86Config-4 for TV out with fglrx).

S-Video-out is also possible with the free radeon drivers, but does appear to be a little more difficult to pull off. The utility atitvout works with this card, but requires some patience.

For atitvout to work, the following seems to be required:

You can then divert output to the TV using atitvout (as root):

 # atitvout -f detect
 # atitvout pal
 # atitvout -f t

And watch DVDs etc to your heart's content. To switch back to the LCD:

 # atitvout -f l

This all sounds quite complicated, but it is possible to put all that into one script that fires up a new X session and switches to it, running your favourite media player on that new screen (the script I use).

NTSC video-out untested.

Xinerama/Multi-head

The ATI Radeon Mobility 9200 card is reported by lspci as being a Radeon 9000 M9, which is apparently a more accurate description of its parentage than the "9200" moniker:

 0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R250 Lf [Radeon Mobility 9000 M9] (rev 01) (prog-if 00 [VGA])
 

This card should be able to support two screens under X at the same time (LCD + external CRT). These could be used either in dual head mode where each screen is managed by a separate window manager or in Xinerama mode, where the one window manager goes wide-screen.

Using the proprietry ATI Radeon drivers (fglrx), did not provide much joy with dual head or xinerama modes.

The screen corruption problems could be part of a conflict over libGL.so.1.2 and libGL.so.1 etc. Fixing these symlinks either using ln -s or ldconfig might solve these problems...

Changing over the free radeon drivers and Xinerama pretty much works out-of-the-box. Gotta love that! (XF86Config-4 for Xinerama with radeon driver)

Note that trying to do a presentation to an external projector with xinerama is a problem:

So if you want to give a presentation using a data projector, then disable Xinerama!

DRI

Using the fglrx driver, as long as the kernel module fglrx (part of the proprietry ATI drivers) is loaded before X is started, DRI appears to work well. Both tuxracer and gltron work quite nicely with high frame rates. Make sure /etc/X11/XF86Config-4 has the following entry for the "Device" section to configure fglrx not to sync to the screen refresh rate:

Option "Capabilities"               "0x00000000"

The in single head mode, the radeon driver disables DRI, so the MESA (software) renderer is used.

Benchmarks for OpenGL rendering with setup are as follows (note that with Option "UseInternalAGPGART" "no", only glxgears runs, fglrxgears does not).

fglrxradeon single headradeon dual head
glxgears (default size) 2150 fps1507 fps259 fps
glxgears (full screen) 162 fps

Touchpad

The touchpad will work out-of-the-box with the normal PS2 mouse driver; however, enhanced features (scroll-'wheel' area etc) requires some additional configuration.

Using the Synaptics touchpad driver the additional features of the touchpad work well (this driver is also available in Debian unstable as the package xfree86-driver-synaptics). The "scrollwheel" area on the right side of the pad works to scroll windows, and the tap-to-click features are enabled. Additional configuration of this driver in the XFree86Config-4 file may be done, but the suggested defaults shown on the project website seem to work fine.

Consider also some other approaches such as qsynaptics or ksynaptics that have recently been released. (untested by me)

Network

10/100BaseT

Works out of the box with the Woody bf24 kernel. With the 2.6 kernel, load 8139cp in /etc/modules. Apparently, the 8139too driver also works for this card.

Wireless

Untested by me. I have heard good reports about the proprietry linuxant drivers, the NDIS wrapper project, and the IPW 2100 drivers. (Note: some versions of this laptop seem to make use of the IPW 2200 drivers... check the output of lspci to see what driver might suit your laptop.)

David Zanetti recently added the following that will no doubt be useful to those battling with nx7010 wireless:

The IPW2200BG works fine for me, using the Intel driver from ipw2200.sourceforge.net. 0.15 loads fine, and even does WEP properly... although [it] requires binary-only firmware.
You may need to ensure you compile the kernel with modversions enabled, as the code doesn't seem to like kernels without modversions.

Fax/Modem

Modem

The Debian packages sl-modem-daemon and sl-modem-source adequately support this modem. Unfortunately, this packge is non-free owing to its licence. Note that after installation of the sl-modem-source package, module-assistant must be run manually to make the kernel module (see /usr/share/doc/sl-modem-source/README.Debian for more details). Note that the kernel-source package may also be needed to compile this module. For non-Debian users, the source is available from SmartLink.

 # apt-get sl-modem-source sl-modem-daemon
 # m-a a-i sl-modem

If you have problems with this modem not being detected by kppp, then make sure /dev/modem is a symlink to /dev/ttySL0 (and not /dev/slamr0) which links the driver to a tty.

Update: recent ALSA packages support AC97 modems and it has been reported that the ALSA modules can be used for this modem rather than the sl-modem-source package. The sl-modem-daemon is still needed, however, so you still need some non-free software, but don't need to taint your kernel. The ALSA module to use is snd_intel8x0m (but note that it doesn't suspend and takes quite some effort to wake it back up.

Fax

Untested.

Special keys

Working without special configuration

Require special configuration

Stanislav Lechev has reported that under xorg-x11, setting the keyboard model as follows (and this seems to work for most HP laptops), the colume buttons work and KDE will show the kmix volume control giving a nice OSD too:

Option      "XkbModel" "hpxe3gf"
 

Thanks to Otto Meijer, who made some additions (untested by me) o my original hotkeys keyboard definition for the nx5000 (nx5000.def) to integrate some of the other quick-launch buttons on the nx5000, for example use the screen locking feature of KDE with the lock button on the keyboard.

Bluetooth

This hardware is supported by the Bluez package. Bluetooth devices could be paired using the pin in /etc/bluetooth/pin. With the help of some other websites (notably, Fisio and T68i with Orange, (linux and mobile phones and Bluetooth + GPRS, ), I was able to pair with my Sony Ericson T68i, initiate a GPRS session and then check my email. I haven't pursued this much further, however.

PCMCIA

Untested. The module yenta_socket is loaded by hotplug without errors.

ACPI

Battery monitor

Works fine OOTB.

Thermal sensors

The cooling fan turns on and off according to the CPU load, but no information is available to userland utilities.

Suspend/Standby/Hibernate etc

As of December 2004, (kernel 2.6.11), S3 suspend works with this laptop. The only things (at this stage) that you have to configure are:

There are script to automate this, of course: setup the video POST data, re-POST the video car ver 1, re-POST the video car ver 2. More details and scripts are also available: nx7010 with FC. There is also a radeon-specific tool boot-radeon.c (untested by me; thanks to Stanislav Lechev for this tip).

Suspend-to-disk using swsusp

For this laptop at the time of writing (this is fairly fast-changing stuff, so the only real way of knowing what's going on is to read LKML (but who has time to do that?), my understanding is as follows:

In recent kernels (2.6.9ish to 2.6.15), there has only been one suspend-to-disk implementation (pmdisk and swsusp have been merged). There is also a set of patches for the Suspend2 suspend-to-disk implementation and a userland suspend-to-disk uswsusp being developed. There's some more information, albeit dated, on the debian-laptop list. The kernel Documentation/power/swsusp.txt is probably the most up-to-date reference (other than the LKML!).

Of importance here was the limitation of swsusp and pmdisk to LOWMEM... but of course I took the 1GB memory option on the laptop, didn't i? The good news is that with one small patch for the kernel, it is possible to get 1GB all into LOWMEM, not compile in HIGHMEM at all and then swsusp seems to work.

The existing in-kernel swsusp is unable to handle more than 892MB of memory, so if you have the 1GB option for the nx7010, you're out of luck. Suspend2 can handle highmem, but many people seem to have trouble getting it to work too.

DISCLAIMER: This is completely unsupported by me and the kernel hackers... your data may or may not be safe with this approach... it's worked for me, but I haven't stress tested it with high-CPU or high-memory applications. YMMV!

Since you're going to the trouble of compiling a new kernel, it is also worthwhile configuring the kernel not to need an initrd to boot. If you want to go to suspend2, that makes life a lot easier. It may (or may not?!) also be necessary for swsusp and pmdisk to work.

Kernel Patching and Compilation

This is done almost-the-Debian-way... There are lots of other resources Out There for this, so this is just a quick summary (to remind me later what I did!). See also:

The 1GB RAM LOWMEM patch for 2.6.9 (and other kernels; I've also done this with 2.6.11 and 2.6.15) is available from Con Kolivas' patch repository (1g_lowmem1_i386.diff) and will hopefully be maintained by him until it makes it into the mainline kernel. A suitable kernel config for the nx7010 must build in the root filesystem drivers, IDE drivers (including PIIX) in order to do without an initrd. My config also tries to minimise the numbers of modules to be built depending on the usage of my machine (but it could probably be improved further).

Note that prior to kernel 2.6.11, the memory eating algorithm for swsusp was O(n2) and very slow. This patch significantly improves the speed at which swsusp reorganises the memory to be written to disk (O(n)). Either use 2.6.11 or newer, or apply this patch to make swsusp usable for all but the smallest memory utilisation patterns.
 # apt-get kernel-source-2.6.9
 $ cd /usr/src
 $ tar jxf kernel-source-2.6.9.tar.bz2
 $ mv kernel-source-2.6.9 kernel-source-2.6.9-lowmem-ordern
 $ cd kernel-source-2.6.9-lowmem-ordern
 $ patch -p1 < /home/stuart/downloads/1g_lowmem1_i386.diff
 $ patch -p1 < /home/stuart/downloads/swsusp-order-n.diff
 $ cp /home/stuart/backups/system/config-2.6.9 .config
 $ make oldconfig
 $ make-kpkg --rootcmd fakeroot --revision 4+20050110.1g.on kernel_image modules_image
 # cd /usr/src
 # dpkg -i kernel-image-2.6.9_4+20050110.1g.on_i386.deb
Note that I am in the 'src' group so that I can do many of these operations as my normal user not root. It's always a good idea... As usual, commands prefixed by a "$" prompt are run as a normal user, while commands prefixed by a "#" prompt are run as root.
I really should reread (and actually try to understand this time) man make-kpkg to sort out what I'm doing with --revision and --append-to-version!

I have made use of a script to hibernate (suspend-to-disk) the laptop, the script is heavily based on one by Jukka Ketelaars. An alternative to the fake X-server to unscramble the video card seems to be to use chvt to switch to a text console before suspend and then back to the X-server after it comes back. This may or may not reinitialise DRI but since I'm using Xinerama, DRI is disabled anyway so it's not a problem!


ChangeLog

2006-07-26
Updated instructions on which channels to mute to get audio working with recent kernels
2006-02-10
As of kernel 2.6.11 or there abouts, S3 suspend works too, now.
2005-01-10
S-Video out with the radeon drivers can work with atitvout. SWSUSP improvements using O(n^2) patch from lkml.
2004-12-10
Connected with T68i phone over Bluetooth to connect to internet using GPRS.
2004-11-23
Custom-compiled 2.6.9 kernel with a 1G LOWMEM patch permits SWSUSP implementation of suspend-to-disk to work.
2004-11-18
Change over to use the radeon driver rather than fglrx. FSF karma++.
Xinerama update, including success with the radeon drivers.
2004-10-14
Added in extra keyboard defns for hotkeys for the nx5000 from Otto Meijer
2004-10-13
Partial support for Xinerama/Dual head with the ATI/fglrx drivers
2004-08-05
Initial public release



TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones        Linux On Laptops

Last edited: Tuesday April 1, 2008

Valid XHTML 1.1 Valid CSS 2