Drivers and tweaks
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
- ACPI suspend
- Using with a beamer/data projector
- Automounting USB devices
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:
- Use ALSA (be careful about hotplug detecting coldplug events and trying to load the ALSA/OSS layer. It appears that loading
i810_audio
can cause a high-pitched whistle to be emitted from the speakers. (Note: I have not rigourously tested this, as now that I have managed to stop the whistling and have ALSA working, I'm hardly going to go back to OSS!) - The ALSA
snd_intel8x0
module (Intel i810/i820/i830/i840/MX440 chipsets) works for this laptop - Not loading the ACPI module
processor
but instead using the modulespeedstep-centrino
seems to be useful in preventing the high-pitched whistling from the speakers. - Under kernels up to 2.6.10(ish), you must mute the channel "External Amplifier Power Down" using
amixer
oralsamixer
(before anything will come out of the speakers. (This is presumably logical to someone Out There.) The commandamixer cset numid 32 0
works for me. Muting or unmuting this channel will also toggle the orange "mute" indicator light on the right speaker. - Under kernel 2.6.11(ish) onwards, you must mute the channelis "Headphone Jack Sense" and "Line Jack Sense".
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:
- connect TV and laptop
- turn TV on
- start laptop
- ensure X is running with 800x600 resolution (e.g. with xrandr or by starting a new X session especially for the purpose)
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.
-
Running X without the
+xinerama
option, I could get dual head to run with separate sessions of kwin (both logged in through the same kdm) on the two screens. The mouse moves between them and they share the same clipboard, but it's not quite the same as xinerama, as I don't have the ability to move windows between the two screens, and they have subtly different configurations, different desktop folders etc. Additionally, there are some screen redraw problems (so far only with kicker and GTK applications, interestingly). - Trying to run in true Xinerama mode is a problem though (if I can get it to work in dual head, Xinerama should be easy, shouldn't it?). But X just refuses to load (using the fglrx driver). It seems to be related to Xinerama disabling DRI, but it's hard to say...
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:
- Using OpenOffice.org Impress, the presentation is always presented on the primary monitor (the LCD), not on the projector. Does anyone know a workaround for this?
- Using MS Powerpoint under WINE-20040716, the presentation is always shown in the primary display (the LCD), but the actual slides are halfway off the side of the screen (width of screen is the sum of the screen-widths of the two screens, but the position is only on one screen).
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).
fglrx | radeon single head | radeon dual head | |
---|---|---|---|
glxgears (default size) | 2150 fps | 1507 fps | 259 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.
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
- LCD/CRT toggle (Fn+F4) works (not LCD+CRT mode, only exclusive) using the "Laptop" config in flgrxconfig (providing that the resolution is not too great for the external monitor).
- Brightness (Fn+F7, Fn+F8) work fine.
- NumLock (Fn+end) works fine.
Require special configuration
- Volume Up, Volume Down, Play/Pause, Stop, Rew, Fwd keys work well with the package
hotkeys
(nx7010 keyboard definition and hotkeys.conf for your ~/.hotkeys/). - Mute requires a little more effort to get working. The above nx7010 keyboard definition includes an entry to run a script to toggle the appropriate hardware mute channel, activating the orange mute light on the keyboard.
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:
- the
8139cp
network driver does not wake up properly, so you need toifdown
andifup
(or useifplugd
) in your suspend script - the video card must be woken up correctly after suspend (use
chvt
to suspend from a non-X VT and re-POST the video card using video_post (see kernel bugzilla)
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:
- APM suspend is not supported by the nx7010 BIOS (only ACPI is supported)
- ACPI S4bios (using BIOS functions to suspend to disk) is reported by
/proc/acpi/sleep
, however it does nothing. This is either not implemented in BIOS or it needs some hidden, undocumented (and absent!) partition to suspend to. - ACPI S3 does now work (see ACPI, above), but of course it still runs down your battery so it might not be what you want.
- Suspend-to-disk within the linux kernel is the only other way.
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.
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:
- Howto upgrade Debian to 2.6 on desktop-linux.net.
- Kernel-package docs and how-to
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).
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
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
Last edited: Tuesday April 1, 2008
Copyright © 1996-2014 Stuart Prescott
ln -s
orldconfig
might solve these problems...