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.

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.

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.

Kernel Configuration
In menuconfig kernel configuration tool, select the following:

CFLAGS Configuration
See Intel Atom

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:

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"

Wired Ethernet
The wired ethernet controller is actually via a PCI Express bus, so ensure the followed is enabled in your kernel:

The Mini's wired Ethernet adapter is supported by the r8169 in-kernel driver. Enable it as follows:

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:

You should now see the network card in. You can run  to ensure that the card was detected when the module was inserted.

Older Kernel versions
Just emerge. 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.

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) │ │    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

Bluetooth
Bluetooth should work out of the box. Once the  module is installed, emerge bluez-utils and follow the configuration instructions from there.

SD/MMC Card Reader
The card reader will work with the  module with no additional configuration. Inserting a card will create a block device called  and its partitions will be ,  , 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.

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  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  is recommended.

The following kernel are selected to get TuxOnIce working correctly:

See the suspend2.conf file (a sub-page) for a working one for the Inspiron Mini. Note that you'll want to emerge, and if you're using a framebuffer suspend splash screen (like the configuration above), you'll need

Webcam
You need the uvcvideo kernel module to get webcam working.

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.

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

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

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

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