Installation Debian sur Dell Precision M4600

Quelques notes sur l'installation de linux sur un PC Dell

1 - Caractéristiques résumées

# dmidecode -s system-manufacturer
Dell Inc.
    # dmidecode -s system-product-name
Precision M460
# dmidecode -s processor-version
Intel(R) Core(TM) i5-2520M CPU @ 2.50GH
# dmidecode -t memory |grep Size
Size: 4096 MB
Size: No Module Installed
Size: 4096 MB
Size: No Module Installed
# lsmod |grep dell
dell-wmi-aio # touches de fonction (hotkeys)
dell-smm-hwmon # alias i8k, gestion ventilateur
# lspci |grep -i net
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)
03:00.0 Network controller: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter (rev 01)
# lspci |grep -i vga
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Whistler [Radeon HD 6730M/6770M/7690M XT]
# hwinfo --monitor |grep -E "Model|Resolution" 
Model: "C54GW 156AT LCD Monitor"
Resolution: 1366x768@60Hz
# hwinfo --framebuffer |grep "Mode "
Mode 0x0300: 640x400 (+640), 8 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+832), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0310: 640x480 (+1280), 15 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0313: 800x600 (+1600), 15 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0316: 1024x768 (+2048), 15 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x030d: 320x200 (+640), 15 bits
Mode 0x030e: 320x200 (+640), 16 bits
Mode 0x0320: 320x200 (+1280), 24 bits
Mode 0x0393: 320x240 (+320), 8 bits
Mode 0x0395: 320x240 (+640), 16 bits
Mode 0x0396: 320x240 (+1280), 24 bits
Mode 0x03b3: 512x384 (+512), 8 bits
Mode 0x03b5: 512x384 (+1024), 16 bits
Mode 0x03b6: 512x384 (+2048), 24 bits
Mode 0x03c3: 640x350 (+640), 8 bits
Mode 0x03c5: 640x350 (+1280), 16 bits
Mode 0x03c6: 640x350 (+2560), 24 bits
Mode 0x0333: 720x400 (+768), 8 bits
Mode 0x0335: 720x400 (+1472), 16 bits
Mode 0x0336: 720x400 (+2944), 24 bits
Mode 0x0321: 640x480 (+2560), 24 bits
Mode 0x0322: 800x600 (+3200), 24 bits
Mode 0x0323: 1024x768 (+4096), 24 bits

$ lspci |grep -i audio
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Turks/Whistler HDMI Audio [Radeon HD 6000 Series]

2 - Bios

# dmidecode -s bios-version
A05

# dmidecode -s bios-release-date
07/11/2011

3 - Microcode processeur

$ dmesg |grep microcode
[ 0.061959] perf_event_intel: PEBS disabled due to CPU errata, please upgrade microcode
[ 1.845445] microcode: CPU0 sig=0x206a7, pf=0x10, revision=0x1a
[ 1.845450] microcode: CPU1 sig=0x206a7, pf=0x10, revision=0x1a
[ 1.845457] microcode: CPU2 sig=0x206a7, pf=0x10, revision=0x1a
[ 1.845464] microcode: CPU3 sig=0x206a7, pf=0x10, revision=0x1a
[ 1.845524] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.
# aptitude install intel-microcode
$ dmesg |grep microcode
[ 0.000000] CPU0 microcode updated early to revision 0x29, date = 2013-06-12
[ 0.074053] CPU1 microcode updated early to revision 0x29, date = 2013-06-12
[ 1.830419] microcode: CPU0 sig=0x206a7, pf=0x10, revision=0x29
[ 1.830426] microcode: CPU1 sig=0x206a7, pf=0x10, revision=0x29
[ 1.830434] microcode: CPU2 sig=0x206a7, pf=0x10, revision=0x29
[ 1.830443] microcode: CPU3 sig=0x206a7, pf=0x10, revision=0x29
[ 1.830495] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
$ cat /etc/modprobe.d/intel-microcode-blacklist.conf 
# The microcode module attempts to apply a microcode update when
# it autoloads. This is not always safe, so we block it by default.
blacklist microcode

Toutefois, ce blacklistage n'est pas applicable, car le module est construit dans le noyau :

# cat /lib/modules/$(uname -r)/modules.builtin |grep microcode
kernel/arch/x86/kernel/cpu/microcode/microcode.ko

4 - Ventilateurs

L'utilitaire i8kutils, qui fournit les commandes i8kctl, i8kfan et i8kmon, est prévu pour piloter les ventilateurs sur les machines Dell. Toutefois, sur cette machine, les ventilateurs sont pilotés directement par le bios et il sera seulement possible d'afficher la vitesse.

# aptitude install i8kutils
$ i8kctl temp
58
$ i8kctl fan
0 0
$ i8kctl speed
115290 0
$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +25.0°C (crit = +107.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +62.0°C (high = +86.0°C, crit = +100.0°C)
Core 0: +60.0°C (high = +86.0°C, crit = +100.0°C)
Core 1: +59.0°C (high = +86.0°C, crit = +100.0°C)

radeon-pci-0100
Adapter: PCI adapter
temp1: +53.0°C (crit = +120.0°C, hyst = +90.0°C)

i8k-virtual-0
Adapter: Virtual device
Left Fan: 0 RPM
Right Fan: 0 RPM
CPU: +62.0°C
temp2: +47.0°C
temp3: +46.0°C
temp4: +47.0°C

5 - Redémarrage

linux /vmlinuz set root= ....... ro quiet

le paramètre

reboot=pci
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

par la ligne

GRUB_CMDLINE_LINUX_DEFAULT="quiet reboot=pci"
# update-grub

L'option redémarrage sera opérationnelle après redémarrage du PC

6 - Wifi

6.1 - Contrôleur wifi

Le contrôleur wifi est Broadcom Corporation BCM4313.

$ lspci -nn -s 03:00 |grep -i net
03:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)

Ses identifiants (fabricant et modèle) sont respectivement 14e4 et 4727

6.2 - Pilotes

6.2.1 Pilotes possibles

Une recherche sur internet indique que trois types de pilotes sont susceptibles d'être utilisés avec les contrôleurs Broadcom: voir https://wiki.archlinux.org/index.php/broadcom_wireless

6.2.2 Pilotes bcma et brcmsmac

$ lsmod |grep bcma
bcma 37206 1 brcmsmac
$ cat /lib/modules/$(uname -r)/modules.alias | grep -i 14e4 |grep -i 4727
alias pci:v000014E4d00004727sv*sd*bc*sc*i* bcma
# modinfo brcmsmac |grep depends
depends: bcma,mac80211,brcmutil,cfg80211,cordic
# lspci -k -s 03:00
03:00.0 Network controller: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter (rev 01)
Subsystem: Dell Inspiron M5010 / XPS 8300
Kernel driver in use: bcma-pci-bridge

Mais ce nom ne correspond pas à un driver connu

# modinfo bcma-pci-bridge
modinfo: ERROR: Module bcma-pci-bridge not found.

6.2.3 Blacklist des pilotes alternatifs b43

Afin d'éliminer dans dmesg la ligne d'erreur :

Support for cores revisions 0x17 and 0x18 disabled by module param allhwsupport=0. Try b43.allhwsupport=1

blacklister les modules b43 et b43legacy, et redémarrer

# echo -e "blacklist b43\\nblacklist b43legacy" >> /etc/modprobe.d/b43.conf
# aptitude reinstall initramfs-tools

6.3 - Firmware

Le contrôleur nécessite un firmware propriétaire disponible dans les dépôts Debian non libre. Ajouter le dépôt non libre (nonfree) dans les sources d'apt et installer le paquet firmware-brcm80211.

# aptitude install firmware-brcm80211

6.4 - Zone de régulation

D'après la documentation Debian, il pourrait y avoir des problèmes en utilisant les canaux autres que 1 à 12 et il recommandé de fixer la zone de régulation.

# iw reg get
country 00: DFS-UNSET
....
$ cat /usr/share/zoneinfo/zone.tab
....
FR +4852+00220 Europe/Paris
....
GB +513030-0000731 Europe/London
....
SE +5920+01803 Europe/Stockholm
# iw reg set FR
# iw reg get
country FR: DFS-ETSI
(2402 - 2482 @ 40), (N/A, 20), (N/A)
(5170 - 5250 @ 80), (N/A, 20), (N/A)
(5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS
(5490 - 5710 @ 160), (N/A, 27), (0 ms), DFS
(57000 - 66000 @ 2160), (N/A, 40), (N/A)
# iwlist wlan0 freq
wlan0 13 channels in total; available frequencies :
Channel 01 : 2.412 GHz
Channel 02 : 2.417 GHz
Channel 03 : 2.422 GHz
Channel 04 : 2.427 GHz
Channel 05 : 2.432 GHz
Channel 06 : 2.437 GHz
Channel 07 : 2.442 GHz
Channel 08 : 2.447 GHz
Channel 09 : 2.452 GHz
Channel 10 : 2.457 GHz
Channel 11 : 2.462 GHz
Channel 12 : 2.467 GHz
Channel 13 : 2.472 GHz
Current Frequency:2.472 GHz (Channel 13)
# nano /etc/default/crda

Changer la dernière ligne pour désigner la région retenue, par exemple FR

REGDOMAIN=FR

6.5 - Messages d'erreur résiduels

Une fois toutes ces modifications effectuées, des erreurs subsistent dans dmesg

[   13.232120] brcmsmac bcma0:0: brcmsmac: brcms_ops_bss_info_changed: associated
[ 13.232215] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: true (implement)

Ne pas s'en inquiéter.

7 - Carte graphique

$ lspci -nn -s 01:00.0
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Whistler [Radeon HD 6730M/6770M/7690M XT] [1002:6740]

Les identifiants de la carte graphique sont (1002:6740).

$ cat /lib/modules/$(uname -r)/modules.alias | grep -i 1002 |grep -i 6740
alias pci:v00001002d00006740sv*sd*bc*sc*i* radeon
# aptitude install xorg xserver-xorg server-xorg-video-ati libgl1-mesa-dri firmware-linux-nonfree

A noter que le paquet xserver-xorg-video-ati installe le paquet xserver-xorg-video-radeon mais également les paquets xserver-xorg-video-mach64 et xserver-xorg-video-r128 et qu'il n'est pas suffisant d'installer seul xserver-xorg-video-radeon.

8 - Audio

8.1 - Cartes audio

$ ls -la /sys/class/sound/card*
lrwxrwxrwx 1 root root 0 juin 8 15:50 /sys/class/sound/card0 -> ../../devices/pci0000:00/0000:00:1b.0/sound/card0
lrwxrwxrwx 1 root root 0 juin 8 15:50 /sys/class/sound/card1 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1
$ lspci -k -s 00:1b.0
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)
Subsystem: Dell Precision M4600
Kernel driver in use: snd_hda_intel
lspci -k -s 01:00.1
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Turks/Whistler HDMI Audio [Radeon HD 6000 Series]
Subsystem: Dell Precision M4600
Kernel driver in use: snd_hda_intel

8.2 - Test des hauts-parleurs internes

$ aplay -L |grep default -A3
default:CARD=PCH
HDA Intel PCH, 92HD90BXX Analog
Default Audio Device
sysdefault:CARD=PCH
HDA Intel PCH, 92HD90BXX Analog
Default Audio Device
front:CARD=PCH,DEV=0
$ speaker-test -Ddefault:CARD=PCH -c2 -t wav

qui est équivalent à

$ speaker-test -c2 -t wav

8.3 - Test de la sortie hdmi

8.3.1 Activation

Relier la sortie hdmi à un périphérique hdmi tel qu'une télévision et activer la sortie (voir arandr).

$ amixer -c1
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
$ amixer -c1 set IEC958 unmute
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]

8.3.2 Test

$ aplay -L |grep -i hdmi -A3
hdmi:CARD=HDMI,DEV=0
HDA ATI HDMI, HDMI 0
HDMI Audio Output
dmix:CARD=HDMI,DEV=3
HDA ATI HDMI, HDMI 0
Direct sample mixing device
dsnoop:CARD=HDMI,DEV=3
HDA ATI HDMI, HDMI 0
Direct sample snooping device
hw:CARD=HDMI,DEV=3
HDA ATI HDMI, HDMI 0
Direct hardware device without any conversions
plughw:CARD=HDMI,DEV=3
HDA ATI HDMI, HDMI 0
Hardware device with all software conversions
$ speaker-test -Dhdmi:CARD=HDMI -c2 -t wav

speaker-test 1.0.28

Le périphérique de lecture est hdmi:CARD=HDMI
Les paramètres du flux sont 48000Hz, S16_LE, 2 canaux
fichier(s) WAV
La fréquence est 48000Hz (demandée 48000Hz)
L'intervalle de la taille du tampon est de 64 à 16384
L'intervalle de la taille de la période est de 32 à 8192
Taille max. de tampon 16384 utilisée
Périodes = 4
was set period_size = 4096
was set buffer_size = 16384
0 - Front Left
1 - Front Right
Temps par période = 2,734685
.......

8.4 - Bip système

8.4.1 Génération

$ cat /proc/bus/input/devices |grep -i beep -B1 -A6
I: Bus=0001 Vendor=111d Product=76e7 Version=0001 N: Name="HDA Digital PCBeep" P: Phys=card0/codec#0/beep0 S: Sysfs=/devices/pci0000:00/0000:00:1b.0/input/input7 U: Uniq= H: Handlers=kbd event7 B: PROP=0 B: EV=40001 B: SND=6
$ lspci -k -s 00:1b.0
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)
Subsystem: Dell Precision M4600
Kernel driver in use: snd_hda_intel
$ echo -e "\007"

8.4.2 Suppression du bip console

Le bip console, utilisé en particulier,en mode console vraie (non graphique) par l'auto-complétude (touche tab, ...), produit un bruit assez désagréable.

On peut

$ amixer -c0 |grep -i beep -A4
Simple mixer control 'Beep',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback 0 - 3
Mono: Playback 3 [100%] [0.00dB] [on]
$ amixer -c0 set Beep 0 mute
Simple mixer control 'Beep',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback 0 - 3
Mono: Playback 0 [0%] [-18.00dB] [off]
$ cat /etc/inputrc
.....
# do not bell on tab-completion
set bell-style none
# set bell-style visible
.....

9 - Conflits ACPI

Des conflits sont détectés par le noyau :

$ dmesg |grep conflict
[ 7.644149] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042F conflicts with OpRegion 0x0000000000000400-0x000000000000047F (\PMIO) (20140424/utaddress-254)
[ 7.644163] ACPI Warning: SystemIO range 0x0000000000000540-0x000000000000054F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20140424/utaddress-254)
[ 7.644169] ACPI Warning: SystemIO range 0x0000000000000530-0x000000000000053F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20140424/utaddress-254)
[ 7.644174] ACPI Warning: SystemIO range 0x0000000000000500-0x000000000000052F conflicts with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20140424/utaddress-254)
[ 7.644179] lpc_ich: Resource conflict(s) found affecting gpio_ich
[ 7.644422] ACPI Warning: SystemIO range 0x0000000000008000-0x000000000000801F conflicts with OpRegion 0x0000000000008000-0x000000000000800F (\_SB_.PCI0.SBUS.SMBI) (20140424/utaddress-254)

Ils peuvent être ignorés, mais on peut également gérer le conflit indiqué par la ligne lpc_ich. Pour supprimer ce conflit,

# cat /etc/modprobe.d/lpc_ich.conf
# Suppression conflit avec gpio_ich
blacklist lpc_ich
# update-initramfs -u

Il ne reste plus qu'un message de conflit :

$ dmesg |grep conflict
[ 7.608204] ACPI Warning: SystemIO range 0x0000000000008000-0x000000000000801F conflicts with OpRegion 0x0000000000008000-0x000000000000800F (\_SB_.PCI0.SBUS.SMBI) (20140424/utaddress-254)