Lately, I was lucky enough to get my hands on an HP 2740p Tablet, which hit the market not long ago. I was definitely interested in giving it a try, mostly because it had a solid state drive, but also to find out how Linux would cope with its hardware. Let's just say my experience was far from the smooth trip I had planned, so I thought I'd share some of the things I did to overcome those problems. I hope some of my ideas may help others in case they face a similar situation.
When I first had a chance to test the 2740p, I used the two USB drives I usually carry with me, holding Ubuntu 9.10 and PCLinuxOS 2010 respectively, and booted from them. I could not see any evident problems, so I assumed it would be just another Linux "friendly" box.
When I got home, I tested the same things again and it didn't take long before I found some problems. PCLinuxOS 2010 was working well for the most part, but had problems with 3D rendering, effectively resulting in Compiz not being available. Ubuntu 9.10 was working fine in terms of graphics, even with 3D effects fully functional, but would not recognize the Wireless card.
My initial thought was that Ubuntu 10.04, specially because of its LTS nature, would be better and more complete in terms of hardware support, so I went ahead and tested it. Surprisingly enough, not even with the latest updates did I get it to work. I could hear login sounds and the usual Ubuntu session start tune, but the screen was pitch black. Linux Mint 9 and Pardus 2009.2 were suffering from the same problems.
As you can imagine, I was puzzled to see Ubuntu 9.10 supporting a video card that Ubuntu 10.04 did not support. What's that supposed to mean!?
KNOW YOUR HARDWARE
It was clear to me that most Linux distros were not dealing with the hardware successfully. I therefore had to try and find out which hardware exactly I was dealing with, so I could find more information online. The LSHW command is invaluable in this regard.
The command above would list all hardware available in your machine. It is usually a good idea to pipe it to a file, so we can reference it later.
lshw > hardware.txt
Similarly, you can apply filters to limit the output of this command. In this case, I was interested in the display and network information. Here's the command I used:
lshw -C display && lshw -C network
Here's the output I got:
*-network description: Wireless interface product: BCM4312 802.11b/g vendor: Broadcom Corporation physical id: 0 bus info: pci@0000:43:00.0 logical name: eth2 version: 01 serial: 78:e4:00:68:5e:20 width: 64 bits clock: 33MHz capabilities: bus_master cap_list ethernet physical wireless configuration: broadcast=yes driver=wl0 driverversion=188.8.131.52 ip=192.168.128.109 latency=0 multicast=yes wireless=IEEE 802.11 resources: irq:19 memory:d0500000-d0503fff *-display description: VGA compatible controller product: Arrandale Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 version: 12 width: 64 bits clock: 33MHz capabilities: bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:34 memory:d0000000-d03fffff memory:c0000000-cfffffff(prefetchable) ioport:5050(size=8)As you can see, the hardware that was giving me a headache was:
Intel HD Arrandale Integrated Graphics Controller
Broadcom BCM4312 Wireless card
KNOW YOUR DISTROS
Before going into full blown driver hunting, it is interesting to scan a few distros and see what kind of hardware support each one provides. A few CD-Rs is all it takes, but because the 2740p has no local CD drive, I had to create a few LiveUSBs instead.
As I already mentioned, none of the following distros did the job in this case:
Linux Mint 9
My options were very limited, but my best bets were Ubuntu 9.10 and PCLinuxOS 2010.
GOOGLE IS YOUR FRIEND
I decided to go with Ubuntu 9.10. The main reason is that Ubuntu is far more popular than PCLinuxOS, so getting information from forums or even finding some kind of hardware support was more likely. In this case, it was about finding a way to get support for my Broadcom wireless card.
Simply searching for the specific card model on Google was enough to get some interesting information from forums. I found some relevant tutorials to get some Windows drivers to work using Ndiswrapper and even some Broadcom hybrid drivers available from their official website. I thought I had a better chance of getting things to work using those hybrid drivers, so I downloaded them and off I went.
UBUNTU TO THE RESCUE
I finally set up an Ubuntu 9.10 LiveUSB, installed it on the machine and completed all updates using an ethernet connection. As I was getting ready to reboot the machine, Ubuntu automatically found that certain hardware required proprietary drivers to work (How cool is that?). It ended up being quite simple, as it did it all automatically. I only had to download the drivers recommended by Ubuntu and recycle the machine.
On and off, I spent about two days testing different things until I found a viable solution. This is specially annoying when I see that the video card in this machine was supported in the second to last Ubuntu release, but is not in any of the latest major Linux releases, with the exception of PCLinuxOS 2010. Not even Ubuntu 10.04 LTS (with its supposedly enhanced hardware support) nor Fedora 13 (theoretically including cutting edge video drivers and XORG changes) could even get the screen to blink.
The Kernel compilation policy is criticized sometimes for this apparent "stepping back" behavior. I personally believe that it is mostly positive and that Linux hardware support takes massive steps forward with every release, but those few steps back are certainly regrettable and hopefully will no longer take place in the future.
I am now typing these lines from this fully functional HP 2740p with Ubuntu 9.10 on top. I hope this article did actually shed some light on the thought process behind troubleshooting around lack of hardware support in Linux. The most important thing to keep in mind, though, is that Linux users need to keep an eye and prevent "injuries" before they happen. If you are thinking of buying a new PC and want to install Linux on it, the best way to troubleshoot potential problems is to be sure they won't happen. In other words, do some research to confirm others are running Linux on it with no problems, or test before you buy, if possible.
Good Luck and thanks for reading!