Saturday, June 5, 2010

The curious case of Linux hardware support

Through the few years I have been using Linux, I have barely had any problems with hardware not being supported or working incorrectly. I have almost exclusively used HP corporate hardware, never using anything too "bleeding edge". This was probably down to luck initially, slowly becoming part of my "best practices" as I learned more about Linux.

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.

PROBLEMS START

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.

lshw

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=5.10.91.9 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:

PCLinuxOS 2010
Ubuntu 9.10
Ubuntu 10.04
Linux Mint 9
Pardus 2009.2
Fedora 13


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.

THE AFTERMATH

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!

15 comments:

  1. Hi,very interesting it does seem an eye needs to be kept more on compatibility issues.i like linux but being honest i need windows 7 too.fact of life drm is here and for me to be able to have a certain s player to work i need drm and silverlight not mono.i would just stay with linux ubuntu but cant which is sad as other wise its as good as windows 7 and i find it to run faster on my dual core basic computer.i hope note is taken to the issues you have raised.its cutting edge tech in the 21st century now.

    ReplyDelete
  2. A helpful tool in analyzing problems that appear upon boot is the dmesg file, which contains the output of the kernel ring buffer. In the case of Broadcomm wifi, for instance, it will often not only list the problem, but its solution, as well. Simply issue the command "dmesg" at the command line for a dump to the screen, or use the redirection feature to create a file from the output, that you can then browse.

    ReplyDelete
  3. Thanks for your posts!

    @rambo tribble: That's right, very good advice. I have used dmesg many times in the past, it's just that I actually didn't need to go that deep into issue resolution this time. In fact, I was not really sure how to best approach this article. There was the actual problem I was facing with the 2740p, or maybe a more general approach to troubleshooting. The latter is too wide to properly cover in an article, and I had already discussed some of the commands implied in previous articles. Eventually, I decided to go with the former, even if I knew it would not be completely thorough.

    Thanks!

    ReplyDelete
  4. It is same thing if buy a printer or a webcam.Best is check before who support Linux.
    I bought a Samsung printer and a Logitech cam and they work with all distribution I have tryed.
    But I had problem if tryed Trust webcam and Canon printers.

    ReplyDelete
  5. I had the exact same problem with my 2740p. I've been an Ubuntu user for 3-4 years and regularly run alpha or beta versions. I was shocked to see the machine sit there like a lump, figuring that I was safe with Intel integrated graphics. I do have an intel wifi card in my machine, so the broadcom issue didn't hit me.

    When you finally got settled, did you have issues with the digitizer and/or touch screen drivers?

    Thanks for your article!

    ReplyDelete
  6. @taggie: I did keep having issues, the computer was freezing quite regularly, I believe because of not being able to fully handle the intel video card. This was effectively just a test for me, as that computer is not really mine, so I simply reset it back to its original state (Windows XP) and gave it back to its owner.

    I personally would not recommend Linux users this computer, it can get messy and frustrating.

    Btw, I did not use digitizer or touch screen drivers myself. What was your experience, have you managed to get them to work?

    Thanks

    ReplyDelete
  7. Its quite a problem to fix the blank screen problem in 10.04 but I did it ;)

    1. untill the fix allways edit grub boot options to include i915.modeset=0 (or put it into /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="..." and run sudo update-grub)

    2. install server version so the install goes thru in text mode (I don't remember if I did step 1 at install - try it or with "nomodeset" if you get blank screen)

    3. after installation login and add x-org edgers ppa to get the latest intel drivers:
    > sudo add-apt-repository ppa:ubuntu-x-swat/x-updates && sudo apt-get update

    4. install desktop
    > sudo apt-get install ubuntu-desktop

    4a. recomended, remove server and install desktop kernel
    > sudo apt-get install linux-image-generic && sudo apt-get purge linux-image-server

    5. reboot - you will have X errors, but continue and run in "low graphics mode for just this session" (repeat every time on reboot :/)

    As far as I understand the problem (I'm no expert, so I might be wrong): modesetting was done by x-org but that is now done by the kernel. It fails and goes into unsupported resolution and the screen goes black - if you turn off the lights you will see that screen is actually on, but displays only black colour.

    ReplyDelete
  8. @Chema Martín: pen & touch work out of the box on 10.04

    ReplyDelete
  9. @nEJC: Thanks for your detailed post, I will keep that in mind. Still a bit too complicated for an average user, though!

    ReplyDelete
  10. My System with only one operating System Ubuntu 10.04 LTS Now I am facing the Grub Rescue problem. How to overcome from that problem

    Krishna Mohan

    ReplyDelete
  11. I am using Ubuntu and it is performing well. By the way, thanks for sharing your knowledge and this really useful article.

    ReplyDelete
  12. hey interesting article! Have you been facing problems when rotating the screen? With Ubuntu 10.10 the mouse seems not to recognize that I turned the screen.

    Have you a solution?

    ReplyDelete
  13. Hi there,
    You know how to configure blutooth dongle in ubuntu. I wonders there is a method.

    ReplyDelete
  14. Nice blog and useful information i think that is very good that we find differents things at linux

    ReplyDelete
  15. I want to know more about this program because looks interesting.

    ReplyDelete