Saturday, February 10, 2007

NetBSD on Packard Bell EasyNote GN45-002 (Skype Edition)

So like, I decided to make a post on how things are going with NetBSD on my Packard Bell EasyNote GN45-002 (Skype Edition).

First, the specs:

Intel(R) Core(TM) Duo T2250 (1.73GHz)
2GB DDR2 RAM (512MB stock)
80GB HDD
10/100Mbps Ethernet
56K V.92 Modem
Wireless LAN ABG
"High Definition" Audio
Built-in Camera
TV out
224MB Intel GMA950 shared memory (DVMT)
ExpressCard Slot
DVD Dual+R9
Remote Control
Integrated BlueTooth

Just a note, I'm running a GENERIC.MPACPI kernel from cvs, built 21/01/2007.

I'll go through each (working) component of the system:

Intel(R) Core(TM) Duo T2250
So far as I know, NetBSD's cool with it. dmesg says:
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel Pentium M (Yonah) (686-class), 1733.51 MHz, id 0x6e8
cpu0: features bfe9fbff
cpu0: features bfe9fbff
cpu0: features bfe9fbff
cpu0: features2 c189
cpu0: "Genuine Intel(R) CPU T2250 @ 1.73GHz"
cpu0: I-cache 32 KB 64B/line 8-way, D-cache 32 KB 64B/line 8-way
cpu0: L2 cache 2 MB 64B/line 8-way
cpu0: using thermal monitor 1
cpu0: Enhanced SpeedStep (1404 mV) 1733 MHz
cpu0: unknown Enhanced SpeedStep CPU.
cpu0: using only highest and lowest power states.
cpu0: Enhanced SpeedStep frequencies available (MHz): 1733 800
cpu0: calibrating local timer
cpu0: apic clock running at 133 MHz
cpu0: 64 page colors
cpu1 at mainbus0: apid 1 (application processor)
cpu1: starting
cpu1: Intel Pentium M (Yonah) (686-class), 1733.40 MHz, id 0x6e8
cpu1: features bfe9fbff
cpu1: features bfe9fbff
cpu1: features bfe9fbff
cpu1: features2 c189
cpu1: "Genuine Intel(R) CPU T2250 @ 1.73GHz"
cpu1: I-cache 32 KB 64B/line 8-way, D-cache 32 KB 64B/line 8-way
cpu1: L2 cache 2 MB 64B/line 8-way
cpu1: using thermal monitor 1
cpu1: Enhanced SpeedStep (1404 mV) 1733 MHz
cpu1: unknown Enhanced SpeedStep CPU.
cpu1: using only highest and lowest power states.
cpu1: Enhanced SpeedStep frequencies available (MHz): 1733 800
10/100Mbps Ethernet
dmesg says:
rtk0 at pci3 dev 0 function 0: Realtek 8139 10/100BaseTX (rev. 0x10)
rtk0: interrupting at ioapic0 pin 17 (irq 11)
rtk0: Ethernet address 00:16:36:76:23:65
rlphy0 at rtk0 phy 7: Realtek internal PHY
rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

No problems there...

Wireless LAN ABG
This is where the fun begins! Let's start with what dmesg had to say:

wpi0 at pci2 dev 0 function 0: Intel PRO/Wireless LAN 3945ABG Mini-PCI Adapter (rev. 0x02)
wpi0: interrupting at ioapic0 pin 17 (irq 11)
wpi0: 802.11 address 00:13:02:9a:32:15
wpi0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wpi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wpi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps

The first thing I had to do to get this running was copy the firmware *.ucode (which is needed for this driver to operate) from here to /usr/pkg/libdata/if_wpi/. Now, the trick with this laptop to get this running with my network is as follows:
ifconfig wpi0 up ssid pseudoxh4 (1)
dhclient wpi0 (2)
However, after carrying (1) out, I have to press the WiFi button twice, otherwise I get a series of errors. Also, after doing (1), errors I typically get are:

wpi0: fatal firmware error
wpi0: timeout waiting for adapter to initialize

which are nothing out of the ordinary. However, sometimes I get a flood of different wpi0 messages and the card doesn't work at all.
Overall, the card is very unstable-- that is, it disconnects at very random intervals and requires a reboot to get it running again. I use a Ralink USB stick I had lying around in place of this.

"High Definition" Audio
Works:
azalia0 at pci0 dev 27 function 0: Generic High Definition Audio Controller
azalia0: interrupting at ioapic0 pin 22 (irq 10)
azalia0: host: Intel 82801GB/GR High Definition Audio Controller (rev. 2)
azalia0: host: High Definition Audio rev. 1.0
azalia0: codec[0]: Sigmatel STAC9220 (rev. 34.1)
azalia0: codec[0]: High Definition Audio rev. 1.0
azalia0: playback: max channels=2, encodings=1
azalia0: playback: PCM formats=e07e0<24bit,20bit,16bit,192khz,176.4khz,96khz,88.2khz,48khz,44.1khz>
azalia0: recording: max channels=2, encodings=1
azalia0: recording: PCM formats=e07e0<24bit,20bit,16bit,192khz,176.4khz,96khz,88.2khz,48khz,44.1khz>
azalia0: codec[1]: 0x11c1/0x3026 (rev. 7.0)
azalia0: codec[1]: High Definition Audio rev. 1.0
azalia0: codec[1]: No support for modem function groups
azalia0: codec[1] has no audio function groups
audio0 at azalia0: full duplex, independent


TV out
I've only gotten TV out to work with Xorg-- Fn+F3 doesn't seem to work for the console for unknown reasons. (BIOS setup doesn't seem to have much info on TV out, either)


Intel GMA950
Console
With respect to framebuffer, there's an experimental vesafb driver in cvs which works with this, though it doesn't work with 16:10 resolutions. With respect to specific console framebuffer drivers, NetBSD doesn't have any, as dmesg says:
Intel 82945GM/PM/GMS Integrated Graphics Device (miscellaneous display, revision 0x03) at pci0 dev 2 function 1 not configured

X
X supports this card via the i810 driver. However, NetBSD's XFree86 doesn't support this particular card and you have two choices:
1) VESA driver
2) Grabbing xorg from pkgsrc and using that
I went with 2.
But wait! The fun's not over with this card-- you need a tool called '915resolution', available from pkgsrc, which allows you to "force" X to use your card's native/16:10 resolution by (temporarily) modifying the Intel Video BIOS.
I set up an rc script that runs
/usr/pkg/sbin/915resolution 58 1280 800 in order to give me 1280x800 on X.
A copy of my xorg.conf can be found here.
EDIT (03/07/2007): NetBSD now has DRI/DRM support and so, the Intel 950GMA supports 3D acceleration. Furthermore, pkgsrc now has modular xorg, and the (new) intel driver eliminates the need to set up 915resolution.

ExpressCard Slot
dmesg output:
cbb0: interrupting at ioapic0 pin 18 (irq 10)
cardslot0 at cbb0 slot 0 flags 0
cardbus0 at cardslot0: bus 11
pcmcia0 at cardslot0


DVD Dual+R9
As dmesg says,
cd0 at atapibus0 drive 1:
cdrom removable
cd0: 32-bit data port
cd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 2 (Ultra/33)
cd0(piixide0:0:1): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA)

Confirmed to work perfectly using cdrecord and dvdrecord for CD-R and DVD-R, respectively.

Remote Control
dmesg says,
uhidev0 at uhub3 port 1 configuration 1 interface 0
uhidev0: Formosa Industrial Computin Formosa RC105 USB Remot, rev 1.10/1.10, addr 2, iclass 3/1
uhidev0: 6 report ids
ukbd0 at uhidev0 reportid 1
uhid0 at uhidev0 reportid 2: input=1, output=0, feature=0
uhid1 at uhidev0 reportid 3: input=1, output=0, feature=0
uhid2 at uhidev0 reportid 4: input=2, output=0, feature=0
uhid3 at uhidev0 reportid 5: input=2, output=0, feature=0
uhid4 at uhidev0 reportid 6: input=1, output=0, feature=0

usbhidctl -a works, and I can imagine this Remote Control would easily work.

Integrated BlueTooth
Fine, dmesg says it all:
ubt0 at uhub2 port 2 configuration 1 interface 0
ubt0: Broadcom Corp BCM92045NMD, rev 2.00/1.00, addr 2


Userland/Miscellaneous

With respect to battery and power related stuff, ACPI seems to work fairly well:
acpi0 at mainbus0: Advanced Configuration and Power Interface
acpi0: using Intel ACPI CA subsystem version 20060217
acpi0: X/RSDT: OemId , AslId <>
acpi0: SCI interrupting at int 9
acpi0: fixed-feature power button present
ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
PNP0A08 [PCI Express/PCI-X Mode-2 Host Bridge] at acpi0 not configured
PNP0C02 [Plug and Play motherboard register resources] at acpi0 not configured
PNP0C0F [PCI interrupt link device] at acpi0 not configured
PNP0C0F [PCI interrupt link device] at acpi0 not configured
PNP0C0F [PCI interrupt link device] at acpi0 not configured
PNP0C0F [PCI interrupt link device] at acpi0 not configured
PNP0C0F [PCI interrupt link device] at acpi0 not configured
PNP0C0F [PCI interrupt link device] at acpi0 not configured
acpiec0 at acpi0 (PNP0C09): ACPI Embedded Controller
acpiec0: io 0x62,0x66
PNP0200 [AT DMA Controller] at acpi0 not configured
PNP0103 [HPET Timer] at acpi0 not configured
PNP0000 [AT Interrupt Controller] at acpi0 not configured
npx0 at acpi0 (PNP0C04)
PNP0C02 [Plug and Play motherboard register resources] at acpi0 not configured
PNP0B00 [AT Real-Time Clock] at acpi0 not configured
attimer1 at acpi0 (PNP0100): AT Timer
pckbc0 at acpi0 (PNP0303): kbd port
pckbc1 at acpi0 (SYN1003): aux port
acpiacad0 at acpi0 (ACPI0003): ACPI AC Adapter
acpibat0 at acpi0 (PNP0C0A-1): ACPI Battery (Control Method)
acpilid0 at acpi0 (PNP0C0D): ACPI Lid Switch
acpibut0 at acpi0 (PNP0C0C): ACPI Power Button
acpibut1 at acpi0 (PNP0C0E): ACPI Sleep Button
acpitz0 at acpi0: ACPI Thermal Zone
acpitz0: unable to get polling interval; using default of 30.0s
acpitz0: passive cooling mode only
acpiec0: EcRead: timeout waiting for EC to process read command
acpitz0: critical 97.0C passive -273.-3C
acpiacad0: AC adapter online.
acpibat0: battery info: SIMPLO, LION, ZH01, 454

envstat -r takes care of all the little things. :)
The built-in camera isn't compatible with NetBSD (or Linux, as far as I've seen) due to lack of documentation on the particular chipset.
I haven't gotten the 56K modem to work, and I don't intend to do so.

I guess that's about it. A few things you might want to look at:
My dmesg
My xorg.conf (Will be updated soon to include TV-out support)
Screenshots of the system running XFCE :)

If there's anything I've missed, feel free to comment.