Dell Inspiron Mini
This guide describes the necessary kernel options, configuration settings, and tips and tricks to get Gentoo running on the Dell Inspiron Mini 9 (there is a separate article for the Dell Inspiron Mini 10 (1010)). It uses the Intel Atom processor which provides an interesting challenge when choosing CFLAGS since the Atom, while supported all the newest Intel instruction sets, up to SSSE3, doesn't support out-of-order execution or EM64T. Additionally, some kernel modules aren't built in to the kernel and in some cases, aren't available in portage, so it took a while to find the appropriate items.
This article assumes that you're comfortable configuring a kernel and compiling/installing kernel modules outside of portage.
Contents |
[edit] Hardware
The Inspiron Mini uses a similar set of hardware to the EEE PC and other netbooks. With a little tweaking, and some third party drivers, you can get all the hardware working well.
Unlike many other Dell laptops, the hardware configuration is relatively fixed with the main options being solid-state drive size, memory amount, and whether or not to include additional options.
Below is the description of the hardware and the various kernel modules associated with them.
| Type | Device | Usability | Driver | Notes |
|---|---|---|---|---|
| Processor | Intel Atom N270 | Works | See Processor for arch options | See Below for Arch/CFLAGS options |
| SSD + controller | Intel 82801G / ICH7 | Works | PIIXn | No HD, just solid-state drive |
| SD/MMC card reader | JMicron Device 2381 | Works | sdhci | |
| USB | N/A | Works | uhci, ehci | |
| Graphics | Intel 945GM/GMS, 943/940GML | Works | i915 in kernel and xf86-video-intel X.org driver | Known 3D issues |
| Keyboard | N/A | Works | Xorg xf86-input-kbd | |
| Touchpad | Synaptics | Works | synaptics (optional) | See Xorg Configuration for setting Xorg options |
| Wired Ethernet | Realtek RTL8101E | Works | r8169 | See instructions for details |
| Wireless Ethernet | Broadcom BCM4310 | Works with external kernel module | Closed source Broadcom STA driver | See below |
| Bluetooth | Broadcom BCM2046 | Works | hci_usb | |
| Sound | Intel HD Audio | Works with manual conf | snd_intel_hda | Default ALSA/hda configuration doesn't work, see below |
| Webcam | Microdia SONiX | Works mostly | uvcvideo | |
| Suspend to Disk | Works | tuxonice | See #Suspend to disk configuration for suspend2.conf |
[edit] Arch / CFLAGS
The Atom processor is based on the Core architecture but lacks the Core's out-of-order execution capability. To make best use of the processor's capabilities, gcc should be told to generate code for an Intel Core processor, but with generic instruction scheduling. An authoritative explanation can be found in this linux-kernel mailing list thread.
[edit] Kernel Configuration
In menuconfig kernel configuration tool, select the following:
| Linux Kernel Configuration: Processor Type |
Processor type and features --->
[*] Symmetric multi-processing support
...
Processor family (Core 2/newer Xeon) --->
[*] Generic x86 support
...
[*] SMT (Hyperthreading) scheduler support
|
[edit] CFLAGS Configuration
See Intel Atom
[edit] Configuration Tips
[edit] Audio
The intel-hda Alsa driver covers a wide variety of chipsets, and with that comes a wide variety of mixer configurations. The Inspiron Mini's mixer configuration is actually the "toshiba" configuration (not the "dell" configuration). To actually get sound working, you have to define the mixer type in /etc/modules.d/alsa. The full working configuration can be found here. The line you need to add after emerging alsa-utils is:
(other options)... options snd-hda-intel model=toshiba
[edit] Video
While the i915 and xf86-video-intel drivers work well (and no longer require the hack to overwrite BIOS VESA modes for custom resolutions), there seem to be issues using OpenGL with the chipset. Whenever OpenGL is initialized, even just to check capabilities, such as running glxinfo, Xorg crashes. If anyone knows a way around this, please post it here. The versions that this seems to be occurring under are:
x11-drivers/xf86-video-intel-2.1.1 USE="dri" sys-kernel/linux-2.6.25-gentoo-r7 (i915 module) x11-base/xorg-server-1.3.0.0-r6 USE="dri ipv6 nptl xorg"
[edit] Wired Ethernet
The wired ethernet controller is actually via a PCI Express bus, so ensure the followed is enabled in your kernel:
| Linux Kernel Configuration: PCI Express Support |
Bus options (PCI etc.) ---> [*] PCI Express support |
The Mini's wired Ethernet adapter is supported by the r8169 in-kernel driver. Enable it as follows:
| Linux Kernel Configuration: PCI Express Support |
Device Drivers --->
[*] Network device support --->
[*] Ethernet (1000 Mbit) --->
<M> Realtek 8169 gigabit ethernet support (NEW)
|
Some people have reported that the in-kernel driver didn't work on their Mini, but that Realtek's derivative r8101 driver did. If you do not have success with that driver, download the r8101 driver from Realtek's website. It can be found here. After downloading the newest version, install it as root:
tar xvjf r8101-yourver.tar.bz2 cd r8101-yourver make && make install depmod -a modprobe r8101
You should now see the network card in ifconfig. You can run dmesg|tail to ensure that the card was detected when the module was inserted.
[edit] Wireless Ethernet
[edit] Older Kernel versions
Just emerge net-wireless/broadcom-sta. Don't forget to rebuild your kernel module packages after building a new kernel
On portage versions less than 2.2, first emerge app-portage/gentoolkit and run:
emerge -av $( equery -q -C belongs /lib/modules/ | sed -e 's/\(^\| \)/\1>=/g' )
On portage versions gequal to or greater than 2.2, run:
emerge @module-rebuild
The module name is bw.
[edit] Newer Kernel versions
Newer kernels have bw43 driver and b43legacy driver already in the tree.
In kernel select:
General Setup --> Prompt for development and/or incomplete code/drivers
Networking support --> Wireless ---> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers ---> Generic Driver Options -->
│ │ [ ] Select only drivers that don't need compile-time external fir│ │
│ │ [ ] Prevent firmware from being built │ │
│ │ -*- Userspace firmware loading support │ │
│ │ [*] Include in-kernel firmware blobs in kernel binary │ │
│ │ () External firmware blobs to build into the kernel binary
---> Network device support ---> Wireless LAN ---> [*] Wireless LAN (IEEE 802.11)
│ │ <M> Broadcom 43xx wireless support (mac80211 stack) │ │
See CONFIG_B43 for more details.
Next emerge net-wireless/b43-fwcutter to assist in cutting firmware.
Wireless driver for wpa_supplicant is wl
[edit] Bluetooth
Bluetooth should work out of the box. Once the hci-usb module is installed, emerge bluez-utils and follow the configuration instructions from there.
[edit] SD/MMC Card Reader
The card reader will work with the sdhci module with no additional configuration. Inserting a card will create a block device called mmcblk0 and its partitions will be mmcblk0p1, mmcblk0p2, etc., and it can be mounted like any other block device.
Because of aggressive caching, make sure to unmount and eject the card before removing, or you may lose data or corrupt the card.
[edit] Suspend/Resume
Tuxonice works well with this laptop. Just remember that the uvc-video module needs to be removed before suspending, or suspending will fail. See suspend2.conf for the complete configuration used here.
The laptop this configuration was tested on actually uses a patched 2.6.25-gentoo-r7 kernel with the TuxOnIce 3.0 patchset for a vanilla kernel. This is not a recommended configuration, so if you decide set up tuxonice, the syskernels/tuxonice-sources is recommended.
The following kernel are selected to get TuxOnIce working correctly:
| Linux Kernel Configuration: TuxOnIce Kernel Options |
Power management options --->
[*] Hibernation (aka 'suspend to disk')
(/dev/hda2) Default resume partition
<*> Enhanced Hibernation (TuxOnIce) --->
<*> File Allocator
<*> Swap Allocator
<*> Compression support
<*> Userspace User Interface support
The option below can be left as its default value if a splash isn't used
(/usr/local/sbin/tuxonice_fbsplash) Default userui program location
[*] Replace swsusp by default
For compression support to work:
-*- Cryptographic API --->
<*> LZF compression algorithm
|
See the suspend2.conf file (a sub-page) for a working one for the Inspiron Mini. Note that you'll want to emerge sys-power/hibernate-script, and if you're using a framebuffer suspend splash screen (like the configuration above), you'll need sys-apps/tuxonice-userui
[edit] Webcam
You need the uvcvideo kernel module to get webcam working.
| Linux Kernel Configuration: Webcam Kernel Driver |
Device Drivers --->
Multimedia Devices --->
[*] Video For Linux
[ ] Enable Video For Linux API 1 (DEPRECATED)
[ ] Enable Video For Linux API 1 compatible Layer
[*] Video capture adapters --->
[*] V4L USB devices --->
[M] USB Video Class (UVC)
|
[edit] Temperature Sensors
| Linux Kernel Configuration: Intel Core/Core2/Atom temperature sensorr |
Device Drivers --->
<*> Hardware Monitoring support --->
<*> Intel Core/Core2/Atom temperature sensor
|
[edit] Known Issues
[edit] xawtv
Xawtv does not play nice with the built-in webcam, although it works fine in Skype. This may be due to the uvc-video driver.
[edit] Troubleshooting
[edit] Tool Output
[edit] Cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU N270 @ 1.60GHz
stepping : 2
cpu MHz : 1600.000
cache size : 512 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx
constant_tsc arch_perfmon pebs bts pni monitor ds_cpl est tm2
ssse3 xtpr lahf_lm
bogomips : 3196.75
clflush size : 64
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU N270 @ 1.60GHz
stepping : 2
cpu MHz : 1600.000
cache size : 512 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx
constant_tsc arch_perfmon pebs bts pni monitor ds_cpl est tm2
ssse3 xtpr lahf_lm
bogomips : 3192.11
clflush size : 64
[edit] Lspci
00:00.0 Host bridge: Intel Corporation Device 27ac (rev 03) 00:02.0 VGA compatible controller: Intel Corporation Device 27ae (rev 03) 00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) 00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02) 00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02) 00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02) 00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02) 00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02) 00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02) 00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2) 00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02) 00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02) 00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02) 02:00.0 System peripheral: JMicron Technologies, Inc. Device 2382 02:00.2 SD Host controller: JMicron Technologies, Inc. Device 2381 02:00.3 System peripheral: JMicron Technologies, Inc. Device 2383 03:00.0 Network controller: Broadcom Corporation BCM4310 USB Controller (rev 01) 04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E PCI Express Fast Ethernet controller (rev 02)
- Device 03:00.0 is the wifi card
- On Bus 02, the devices are for the SD/MMC card reader
- On Bus 00, 2.0 and 2.1 are the two outputs (internal LCD and VGA port) for the display adapter
[edit] Lsusb
Bus 005 Device 001: ID 1d6b:0001 Bus 005 Device 002: ID 413c:02b0 Dell Computer Corp. Bus 004 Device 001: ID 1d6b:0001 Bus 003 Device 001: ID 1d6b:0001 Bus 002 Device 001: ID 1d6b:0001 Bus 001 Device 002: ID 0c45:63e5 Microdia Bus 001 Device 001: ID 1d6b:0002
- Device 001.002 is the webcam
- Device 005.002 is the bluetooth controller
[edit] Various Config Files
- Alsa module configurations: /etc/modules.d/alsa
- Alsa .asoundrc: .asoundrc
- Kernel Configuration (2.6.25-gentoo-r7, with tuxonice merged in): .config
- CPU Frequency Daemon configuration: cpufreqd.conf
- Xorg configuration: xorg.conf
- TuxOnIce Suspend configuration: /etc/hibernate/suspend2.conf