November 7th, 2006
So, here’s the inevitable ‘setting up the new system’ post!
Just as a reminder (and for Google), this is about my new Lenovo 3000 V100 laptop on Linux, more specifically Mandriva Linux 2007.0. It’s the C5U submodel (this is important as the wireless chipset and CPU differ between submodels).
The good stuff – most things work. Heh. Mandriva gets the config for the internal display exactly right (just make sure you run through the video configuration section at the summary screen during install, even though it all *looks* right, or the display won’t work: you have to actually go through the monitor configuration section and get it to detect the panel). Sound is fine, USB is peachy, the keyboard and trackpad are both set up and external keyboards and mice are plug and play. The wired networking is fine.
The bad stuff – well, it’s this that’s been kicking my ass all day…
The wireless doesn’t really work right. It’s a Broadcom chipset (and a fairly new, sketchily supported one at that: a 4312 (going by the PCI ID, as is the standard way to differentiate the Broadcom chips). Occasionally, ndiswrapper works. Most of the time, it looks like it’s working and seems to be able to talk to the AP but just won’t get an IP address. I am going to poke at this tomorrow.
Getting the video system to do anything much *beyond* the internal panel was something of an arduous exercise.
The system seems, like many with the Intel chipset, to have been saddled with a terrible video BIOS. It doesn’t list any widescreen modes, making it hard to convince the i810 driver that these modes actually exist and the system is capable of displaying them. It also seems to have dodgy DDC info suggesting the adapter isn’t capable of some modes it actually *is* capable of.
All this meant getting it to talk to my new 20″ 1680×1050 LCD display was a bit tough.
In the end I managed to get it working with the current stock i810 driver by installing i915resolution, editing its configuration file so it replaced the 1600×1200 mode in the video BIOS with the 1680×1050 mode (the default is to replace some *other* mode, which doesn’t seem to work) and a lot of hacking at xorg.conf, including disabling DDC. This worked, finally, but didn’t seem quite perfect (there were bands of fuzziness on the monitor).
So in the end I stumbled across the much better solution – the ‘modesetting’ branch of the i810 driver. This is a fairly significant alternate version of the i810 driver that bypasses the video BIOS entirely and detects / sets the available modes (and displays) by itself. This one is far better behaved with this buggy-BIOSed system, and is capable of displaying 1680×1050 perfectly on my external monitor with no hassles at all. It also by default clones the display to the internal panel – even if I booted with the external panel connected, and the BIOS therefore turned off the internal one – and I can disconnect and reconnect the external panel at will.
The only remaining stumbling block is switching between the two, which at the moment still requires either an X restart or a reboot (depending on which panels were connected when I booted up). Ideally, I would like the system to automatically turn off the internal panel and use the external one whenever it’s connected, at the correct resolution, expanding the desktop if appropriate. Whenever the external panel is disconnected, it should use the internal panel at the correct resolution, shrinking the desktop if appropriate. This apparently is all theoretically possible with this branch of the driver (and would rock totally), but doesn’t quite seem to be working yet. I’m monitoring developments with alacrity, though.
Anyway, on with the bad stuff. The SD card reader doesn’t work. The sdhci module is supposed to support it, and does do something with it, but never seems to be able to read any media in it. Apparently the driver was substantially overhauled in kernel 2.6.18, though, so when Cooker moves to that, I’ll see if it works any better.
Suspending works fine, but resuming seems to kill the display totally. It’s a bit hard to figure out what else is working, obviously. I’ve only tried this with the external panel connected, it may go better with just the internal one; will test tomorrow. Also have to test hibernation.
Still, the system is now mostly usable for what I want (wireless is the major stumbling block, but I do have hopes of sorting that out). Onwards and upwards we go!