HP nc6000
& Mandrake Linux
Mon employeur me prête un portable HP nc6000.
Celui-ci fonctionne relativement correctement avec Linux Mandrake 10.0
et 10.1 (community ou official). Cela dit, quelques détails
subsitent, comme :
- le wifi (chipset Atheros), le pilote
semi-propriétaire madwifi
fonctionnant relativement bien ;
- la connexion infrarouge, où une solution existe pour
l'initialisation du chipset SuperIO ;
- les boutons gérant le son.
Mais avant de voir les détails qui fâchent, voici ce que
nous donne lspci :
00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03) 00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03) 00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03) 00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03) 00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03) 00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03) 00:1e.0 PCI bridge: Intel Corp. 82801 Mobile PCI Bridge (rev 83) 00:1f.0 ISA bridge: Intel Corp. 82801DBM (ICH4-M) LPC Interface Bridge (rev 03) 00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4-M) IDE Controller (rev 03) 00:1f.3 SMBus: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03) 00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03) 00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03) 01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10] 02:04.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01) 02:06.0 CardBus bridge: O2 Micro, Inc. OZ711M3 SmartCardBus MultiMediaBay Controller 02:06.1 CardBus bridge: O2 Micro, Inc. OZ711M3 SmartCardBus MultiMediaBay Controller 02:06.2 System peripheral: O2 Micro, Inc. OZ711Mx MultiMediaBay Accelerator 02:06.3 CardBus bridge: O2 Micro, Inc. OZ711M3 SmartCardBus MultiMediaBay Controller 02:0e.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705M_2 Gigabit Ethernet (rev 03)
Voici pour lspci -v :
00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, fast devsel, latency 0 Memory at b0000000 (32-bit, prefetchable) [size=256M] Capabilities: [e4] #09 [4104] Capabilities: [a0] AGP version 2.0
00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03) (prog-if 00 [Normal decode]) Flags: bus master, 66Mhz, fast devsel, latency 64 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00002000-00002fff Memory behind bridge: 90300000-903fffff Prefetchable memory behind bridge: 98000000-9fffffff
00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03) (prog-if 00 [UHCI]) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 38c0 [size=32]
00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03) (prog-if 00 [UHCI]) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 38e0 [size=32]
00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03) (prog-if 00 [UHCI]) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 3c00 [size=32]
00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03) (prog-if 20 [EHCI]) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, medium devsel, latency 0, IRQ 10 Memory at a0000000 (32-bit, non-prefetchable) [size=1K] Capabilities: [50] Power Management version 2 Capabilities: [58] #0a [2080]
00:1e.0 PCI bridge: Intel Corp. 82801 Mobile PCI Bridge (rev 83) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=02, subordinate=05, sec-latency=32 Memory behind bridge: 90000000-902fffff
00:1f.0 ISA bridge: Intel Corp. 82801DBM (ICH4-M) LPC Interface Bridge (rev 03) Flags: bus master, medium devsel, latency 0
00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4-M) IDE Controller (rev 03) (prog-if 8a [Master SecP PriP]) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at 3c20 [size=16] Memory at 40000000 (32-bit, non-prefetchable) [size=1K]
00:1f.3 SMBus: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: medium devsel I/O ports at 1200 [size=32]
00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, medium devsel, latency 0, IRQ 11 I/O ports at 3000 [size=256] I/O ports at 3880 [size=64] Memory at a0100000 (32-bit, non-prefetchable) [size=512] Memory at a0180000 (32-bit, non-prefetchable) [size=256] Capabilities: [50] Power Management version 2
00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03) (prog-if 00 [Generic]) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: medium devsel, IRQ 11 I/O ports at 3400 [size=256] I/O ports at 3800 [size=128] Capabilities: [50] Power Management version 2
01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10] (prog-if 00 [VGA]) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 10 Memory at 98000000 (32-bit, prefetchable) [size=128M] I/O ports at 2000 [size=256] Memory at 90300000 (32-bit, non-prefetchable) [size=64K] Expansion ROM at <unassigned> [disabled] [size=128K] Capabilities: [58] AGP version 2.0 Capabilities: [50] Power Management version 2
02:04.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01) Subsystem: Compaq Computer Corporation: Unknown device 00e5 Flags: bus master, medium devsel, latency 64, IRQ 11 Memory at 90080000 (32-bit, non-prefetchable) [size=64K] Capabilities: [44] Power Management version 2
02:06.0 CardBus bridge: O2 Micro, Inc. OZ711M3 SmartCardBus MultiMediaBay Controller Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, stepping, slow devsel, latency 168, IRQ 10 Memory at 90100000 (32-bit, non-prefetchable) [size=4K] Bus: primary=02, secondary=03, subordinate=06, sec-latency=176 Memory window 0: 40400000-407ff000 (prefetchable) Memory window 1: 40800000-40bff000 I/O window 0: 00004000-000040ff I/O window 1: 00004400-000044ff 16-bit legacy interface ports at 0001
02:06.1 CardBus bridge: O2 Micro, Inc. OZ711M3 SmartCardBus MultiMediaBay Controller Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, stepping, slow devsel, latency 168, IRQ 10 Memory at 90180000 (32-bit, non-prefetchable) [size=4K] Bus: primary=02, secondary=07, subordinate=0a, sec-latency=176 Memory window 0: 40c00000-40fff000 (prefetchable) Memory window 1: 41000000-413ff000 I/O window 0: 00004800-000048ff I/O window 1: 00004c00-00004cff 16-bit legacy interface ports at 0001
02:06.2 System peripheral: O2 Micro, Inc. OZ711Mx MultiMediaBay Accelerator Subsystem: Hewlett-Packard Company NC6000 laptop Flags: slow devsel, IRQ 10 Memory at 90200000 (32-bit, non-prefetchable) [size=4K] Capabilities: [a0] Power Management version 2
02:06.3 CardBus bridge: O2 Micro, Inc. OZ711M3 SmartCardBus MultiMediaBay Controller Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, stepping, slow devsel, latency 168, IRQ 10 Memory at 90280000 (32-bit, non-prefetchable) [size=4K] Bus: primary=02, secondary=0b, subordinate=0e, sec-latency=176 Memory window 0: 41400000-417ff000 (prefetchable) Memory window 1: 41800000-41bff000 I/O window 0: 00005000-000050ff I/O window 1: 00005400-000054ff 16-bit legacy interface ports at 0001
02:0e.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705M_2 Gigabit Ethernet (rev 03) Subsystem: Hewlett-Packard Company NC6000 laptop Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 11 Memory at 90000000 (64-bit, non-prefetchable) [size=64K] Expansion ROM at <unassigned> [disabled] [size=64K] Capabilities: [48] Power Management version 2 Capabilities: [50] Vital Product Data Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/3 Enable-
Les pilotes principaux sont les suivants / main drivers as
follow :
- réseau/network : tg3 (Linux Kernel) or bcm5700
(directly from Broadcom)
- XFree86/X.org + Synaptics : works ok from scrolling from
the touchpad, but no tapping
Section "Files" # Multiple FontPath entries are allowed (they are concatenated together) # By default, Mandrake 6.0 and later now use a font server independent of # the X server to render fonts. FontPath "unix/:-1" EndSection
Section "ServerFlags" #DontZap # disable <Crtl><Alt><BS> (server abort) AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work #DontZoom # disable <Crtl><Alt><KP_+>/<KP_-> (resolution switching) EndSection
Section "Module" Load "dbe" # Double-Buffering Extension Load "v4l" # Video for Linux Load "extmod" Load "type1" Load "freetype" Load "glx" # 3D layer Load "dri" # direct rendering Load "/usr/X11R6/lib/modules/extensions/libglx.a" Load "synaptics" EndSection
Section "InputDevice" Identifier "Keyboard1" Driver "keyboard" Option "XkbModel" "pc105" Option "XkbLayout" "fr" Option "XkbOptions" "" EndSection
Section "InputDevice" Identifier "SynapticsMouse1" Driver "synaptics" Option "Protocol" "auto-dev" Option "Device" "/dev/input/mice" Option "MaxSpeed" "0.12" Option "MinSpeed" "0.06" Option "BottomEdge" "4200" Option "SHMConfig" "on" Option "LeftEdge" "1700" Option "FingerLow" "25" Option "MaxTapTime" "180" Option "MaxTapMove" "220" Option "FingerHigh" "30" Option "VertScrollDelta" "100" Option "TopEdge" "1700" Option "RightEdge" "5300" Option "AccelFactor" "0.0010" EndSection
Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "ExplorerPS/2" Option "Device" "/dev/mouse" Option "ZAxisMapping" "4 5" EndSection
Section "InputDevice" Identifier "SynapticsMouse1" Driver "synaptics" Option "Protocol" "auto-dev" Option "Device" "/dev/input/mice" Option "MaxSpeed" "0.12" Option "MinSpeed" "0.06" Option "BottomEdge" "4200" Option "SHMConfig" "on" Option "LeftEdge" "1700" Option "FingerLow" "25" Option "MaxTapTime" "180" Option "MaxTapMove" "220" Option "FingerHigh" "30" Option "VertScrollDelta" "100" Option "TopEdge" "1700" Option "RightEdge" "5300" Option "AccelFactor" "0.0010" EndSection
Section "Monitor" Identifier "monitor1" VendorName "Generic" ModelName "Flat Panel 1024x768" HorizSync 31.5-48.5 VertRefresh 40-70
# Sony Vaio C1(X,XS,VE,VN)? # 1024x480 @ 85.6 Hz, 48 kHz hsync ModeLine "1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync
# TV fullscreen mode or DVD fullscreen output. # 768x576 @ 79 Hz, 50 kHz hsync ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630
# 768x576 @ 100 Hz, 61.6 kHz hsync ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616 EndSection
Section "Device" Identifier "device1" BoardName "ATI Radeon" Driver "radeon" Option "DPMS" EndSection
Section "Screen" Identifier "screen1" Device "device1" Monitor "monitor1" DefaultColorDepth 24
Subsection "Display" Depth 8 Virtual 1024 768 EndSubsection
Subsection "Display" Depth 15 Virtual 1024 768 EndSubsection
Subsection "Display" Depth 16 Virtual 1024 768 EndSubsection
Subsection "Display" Depth 24 Virtual 1024 768 EndSubsection EndSection
Section "ServerLayout" Identifier "layout1" InputDevice "Keyboard1" "CoreKeyboard" InputDevice "Mouse1" "CorePointer" InputDevice "SynapticsMouse1" "AlwaysCore" Screen "screen1" EndSection
Les boutons de
gestion du son
Les trois boutons en face avant du portable permettant de
couper le volume et le baisser ou l'augmenter fonctionnent bien sous
Linux. Ils sont en fait gérés comme trois touches du
clavier comme l'indique le premier lien.
Après quelques recherches sur les associations les
plus pertinentes, il ressort que XFree86/X.org définit trois
évènements qui nous intéressent au plus haut
point. Le plus simple est de les mettre dans un fichier /etc/X11/xinit.d/nc6000 :
xmodmap -e 'keycode 160 = XF86AudioMute' xmodmap -e 'keycode 174 = XF86AudioLowerVolume' xmodmap -e 'keycode 176 = XF86AudioRaiseVolume'
Et comme je suis utilisateur de KDE, et que KDE gère
ces trois évènements, plus
rien d'autre à configurer... :-)
Je n'ai cependant pas trouvé le moyen d'allumer la LED rouge du
bouton pour
couper le son.
Update : depuis la version 2.6.11-rc1 du noyau, et grâce à
Linus
Walleij qui a remonté l'information aux développeurs
ALSA, la LED du bouton 'Mute' fonctionne !
WiFi Atheros
Le pilote madwifi
fonctionne très bien, pourvu que l'on utilise la version 10.1 de
Mandrake. En effet, la version 10.0 est un peu trop ancienne sur
certains paquetages pour permettre de compiler correctement le pilote.
J'ai utilisé une version CVS de novembre 2004, qui
semble fonctionner correctement. N'ayant cependant pas
d'équipement WiFi pour tester, mais ayant néanmoins pu
accrocher un AP ou un autre, cela me laisse à dire que ça
fonctionne. Reste à le packager, ce que Mandrake a semble-t'il
fait pour les membres du Club. Des volontaires pour PLF ?
Une fois les trois modules compilés, simplement
ajouter leurs noms au fichier /etc/modules pour les
charger au boot :
wlan ath_hal ath_pci
N'oubliez pas que comme la radio WiFi est controllée
par le bouton avec une petite antenne, vous aurez besoin de relancer un
ifup ath0 après avoir activé le WiFi.
La LED bleue indiquant que la radio (WiFi + Bluetooth) est active
s'allume seule.
Bluetooth
L'adaptateur Bluetooth du nc6000 est branché en
interne sur le bus USB. Celui-ci est activé (connecté)
lors de l'appui sur le bouton avec l'antenne. Il est reconnu par KDE,
mais n'ayant pas d'autre équipement, je n'ai pu tester.
IrDA
La gestion de l'infrarouge sur le nc6000 est basé sur
le chipset SuperIO LPC47N227
de SMSC. L'avantage de ce chipset est qu'il est bien documenté
ce qui aide grandement au développement d'outils.
La partie infrarouge de ce chipset permet soit une
émulation d'une UART classique avec des débits ne
dépassant pas les 115200 bit/s (mode SIR), soit par le biais
d'une interface particulière de type LPC (un pont PCI vers ISA).
Comme le port IR est pris en charge au boot par le pilote serial, il
faut ensuite le ré-initialiser puis charger le pilote
spécifique (smsc-ircc2 ).
L'initialisation se fait à l'aide d'une version
modifiée de smcinit.c trouvé sur http://irda.sourceforge.net/smcinit/.
L'archive modifiée prête
à compiler est ici. Le but de
la modification de smcinit.c a été de faire
tester les deux adresses de base de configuration possibles
déterminée par la patte SYSOPT. En effet, sur le nc6000,
l'adresse est à 0x4E et non 0x2E seule valeur supportée
par le programme. Ceci fait, un peu de nettoyage de code de
façon à rendre toutes les options fonctionnelles, et hop,
ça marche mieux.
Les valeurs à passer à smcinit
pour le nc6000 sont les suivantes :
/bin/setserial /dev/ttyS2 uart none /usr/sbin/smcinit -v -s 0x3E8 -f 0x130 -i 7 -d 3 modprobe smsc-ircc2 ircc_dma=3 ircc_irq=7 ircc_fir=0x130 ircc_sir=0x3e8
For our english
readers
My employer lends me a HP nc6000 notebook. It works quite
nicely
with Mandrake Linux 10.0 or better 10.1 (either community or official
versions). However, some details remain unset or non functionnal, such
as:
- the wifi adapter (Atheros chipset based), the
semi-proprietary madwifi is working somewhat flawlessly,
- the IrDA adapter, a solution being presented here to
initialize the SuperIO chipset,
- the sound settings buttons.
Sound buttons
The three buttons on the front face on the laptop are to be used to
control volume, either raising, lowering or muting. They work quite
well under Linux because, in fact, they are seen as keyboard keys as
showed by Patrick Reynolds.
It turns out, after some research, that XFree86/X.org has three very
interesting events. The most simple thing to do to use them is to a
associate them in the /etc/X11/xinit.d/nc6000 file:
xmodmap -e 'keycode 160 = XF86AudioMute' xmodmap -e 'keycode 174 = XF86AudioLowerVolume' xmodmap -e 'keycode 176 = XF86AudioRaiseVolume'
And as I use KDE, and as KDE handle these events, nothing more to do...
:-) First, I did not find how to light/unlight the red LED behind the
mute button, but thanks to Linus Walleij who proposed a patch to the
ALSA developers, it works finely begining with the 2.6.11-rc1
Linux
kernel.
Atheros WiFi
The madwifi works nicely under the 10.1 Mandrake Linux distro.
10.0 is a bit too old to permit to compile it.
I checked out a CVS version from nomvember 2004, which seems to work.
However, I do not have an access point, so YMMV.
Once compiled and installed, just add the following modules in the
right order to /etc/modules file to load them at boot:
wlan ath_hal ath_pci
Do not forget to manually (re)start the ath0 interface (ifup ath0 )
after activating the WiFi/Bluetooth radio. The blue LED showing radio
activity (unintended pun) should light without any help.
Here is presented a strongly modified smcinit
utility used to initialize the SMSC SuperIO chipset in order to use the
IR transmitter on the HP/Compaq nc6000.
Bluetooth
The Bluetooth adapter in the nc6000 is internaly plugged on
the USB bus. It is obviously activated as one press the radio button
(see below). KDE recognises it, but having no Bluetooth equipment, I
could not test it.
About smcinit
to init IrDA
Modifications include:
- autoconf/automake support
- bug fixes in arguments handling (some args would not even
be considered)
- autodiscovery of SMSC chip base address (0x2e or 0x4e)
- extension of the sysconfig/smcinit content to allow
distributions to specify addresses according to the hardware
- rewriting of /etc/init.d/smcinit (same name, maybe should
be another one) to work nicely on Mandrake/RedHat (only tested on
Mandrake 10.1)
I've asked a few questions to the IrDA-users
list:
- Does anybody here knows a way to automate the discovery of
the laptop model in order to specify the right arguments to smcinit?
- I'd like to set up a parameter database, would the tosh-superio.h
be a good point from where to start? Would would be the best form for
this database ? What would be the key (laptop model, ACPI
"variable"(?), PCI Id, etc.)?
- I also need some advice: would it be nice to try to
deactivate the ttyS2 (or other) UART via the right ioctl the same way
setserial would do it, restoring values if no SuperIO is found, or
should this be kept a pure and only setserial task?
The smcinit archive is here.
D'autres pages
au sujet de Linux sur nc6000
jerome AT fenal.org, le 11 janvier 2005. Copyright 2005
© Jérôme Fenal. Tous droits réservés.
All Rights Reserved.
|