Wednesday, June 22, 2011

The case of the missing driver - part 3

Yesterday we learned how to identify unknown hardware.  In today's post we'll talk about finding and installing the driver for that hardware.  Let's look more closely at a hardware identification string we found.

PCI\VEN_8086&DEV_27D0&SUBSYS_00000000&REV_01

This string tells me 5 things.  In order from left to right they are:

  1. The hardware is located on the PCI bus.

  2. The vendor/manufacture number is 8086.

  3. The device identifier is 27D0.

  4. The subsystem identifier is 00000000.

  5. The revision number is 01.


Again, hardware identification strings vary greatly, but most of them look like the above.  Let's focus on the vender number.  Surf on over to pcidatabase.  Enter your vendor number into the "vendor" field and click search.  This will tell you who the manufacture is of that hardware.  In my case 8086 is Intel.  Click on the vendors name and it will bring up a list of known device identifiers.  Search for your device identifier in this list.  I'll tell you right now this list is not complete, so you may not find it.  But if you do find it, it will give you some info about the device such as a friendly name and if you're lucky a link to the driver.

Assuming you still need the driver, you have the manufacture's name and hopefully the device's friendly name.  You can now visit that manufactures web page and download the driver.

If after all this you're still unable to find the correct driver, you can try putting the raw hardware identification string into a Google and see what you get.  A lot of times you get lucky, but this is no guarantee.

There you have it, how to identify hardware and find the correct driver.  Once I learned this process I've never had hardware I couldn't find a driver for.  Hopefully you enjoy as much success as I have.

The case of the missing driver - part 2

Continuing the case of the missing driver, let's talk about identification.  In order to find the driver for the hardware in question you need to know exactly what the hardware is.  And no, I'm not talking about opening up the case and having a look - although under extreme circumstances that might become necessary.

When we talk about identification what we're looking for is the "hardware identification string."  This is not a user-friendly string like "Intel GMA 4500MHD video card."  It's a long string of hex numbers and letters that uniquely identify the hardware.  All hardware identification strings are in the form of <Bus>\<Id>.  The "bus" is one of 15 hardware busses in a modern computer.  Those 15 busses are; ACPI, ACPI_HAL, Display, FDC, HID, HTREE, IDE, ISAPNP, PCI, PCIIDE, Root, Storage, SW, USB, and USBSTOR.  The "id" part of the string varies greatly depending on the type of bus.  It can be short like "PNP0000" or long like "VEN_8086&DEV_27D0&SUBSYS_00000000&REV_01."

Now that we know what the hardware identification string looks like, we need to find it for our unknown hardware.  I'll give you three ways.

First is a program I found years ago called PCITree.  This program enumerates PCI hardware and provides the identification information for each device.  I actually don't recommend this method unless you want to play with PCITree.  This program only works on PCI devices which is only one of the 15 busses.  Plus there are other ways of getting the data without having to install a program.

The second method is the good old registry.  Fire up regedit and head over to HKLM\System\CurrentControlSet\Enum.  You'll see 15 keys for the corresponding busses, under each key are keys for the hardware on that bus.  The unknown hardware will be in this area.  To make it easier you can search.  So if Windows calls the unknown device an "SM Bus Controller" than you can search for that term.

The final method is also the easiest and probably the one you'll want to use.  You can get the info in question in Device Manager.  Select the unknown device and right-click and choose properties.  Click on the details tab then change the combo box to "Device Instance Id."  The information shown in the list control is the hardware identification string.  Unfortunately you can't copy that text into the clipboard, that's the only problem with the Device Manager method.

Now that we've identified our hardware, tomorrow I'll talk about how we find and install the driver for this hardware.

The case of the missing driver

Have you ever had a computer with a missing driver, and no matter how hard you look you can't find the driver.  Heck, you may not even know what the hardware device is.  A bad or missing driver will show up in Device Manager like this:



In this case I've got two missing drivers.  The first, "Multimedia Audio Controller" is fairly easy, that's a missing sound card driver.  But what is an "SM Bus Controller?"  Where do I look for that driver?  I've even seen "Unknown PCI Device" before.  How do you look for a driver for a device that you don't even know what it is?

If the machine has a major manufacture (Dell, HP, etc.) then you've probably been to their page to download drivers.  But what if the machine isn't from a major manufacture, of even if it is what if you can't find the driver, then what?  Microsoft Windows update can be a useful resource.  Their database contains a lot of drivers and will automatically detect and install.  However, their system has one fundamental flaw.  Microsoft charges vendors a fee to validate and host drivers for them.  As I understand it, this fee is fairly significant too.  As a result, many vendors drivers are not available on Windows Update.

If you Google things like "driver downloads" you'll probably find several web sites that have large collections of drivers.  All these sites that I've found are very sketchy. At a minimum they all require you to register and I hate giving out my information - just another way to get spammed.  Many of them require you to download and install a program of theirs which scans your system and reports missing drivers.  I don't like installing questionable programs, who knows all what it's installing.  And what's worst, some of these sites if you do go through all these hoops and they do contain your missing driver, they make you pay a monthly fee to be able to download the driver in question.  My recommendation is unless a site allows you to download a driver without signing up or downloading a program to avoid these sites altogether.

But that brings up back to the original problem, how do we find the driver for our hardware?  When I continue this series tomorrow I'll talk about identifying the hardware in question.

Market Share

I saw an interesting article the other day on the market share of various computer manufactures over the past several years.  There were some surprising things in there.  I'm a very visual person so I think the included graphs appealed to my visual side.

Some of the more interesting points were...

  • In the US the 5 largest computer manufactures are Acer, Apple, Dell, HP, and Toshiba.

  • Worldwide the 5 largest computer manufactures are Acer, Dell, HP,  Lenovo, and Toshiba.

  • In the US, HP is the largest, then Dell, then Acer, then Toshiba, and then Apple.

  • Worldwide, HP is the largest, then Acer, then Dell, then Lenovo, and then Toshiba.

  • Over the last 5 years all companies increased market share except Dell and Apple which lost market share.

  • Dell's market share in the US is 25% whereas it only has a 12% share worldwide.


Some of these statistics were surprising to me.  I never realized Dell was big in the US but not the world.  Also, I never would have guessed HP outsells Dell.

I was also surprised to see how big and how fast Acer has grown.  For those who don't know, Acer now owns Gateway, Packard Bell, and eMachines.  At the rate Acer is growing (and the rate Dell is losing ground), Acer will overtake Dell for the number 2 spot in the US in a few short years.

Here is one of the graphs from that article.

Useful Utilities - Antivirus

Antivirus software is unfortunately just one of those things that you need in today's world.  But I hate most antivirus programs out there.  They are so invasive and resource intensive that in some ways they are as bad as the viruses they are protecting against.  They noticeably slow down your system and they noticeably slow down your network I/O as it scans packets.  They even do things they don't advertise - did you know Norton Antivirus is a firewall?  We found this out the hard way while testing WinINSTALL; communications were blocked yet the Windows firewall was disabled.

There are a number of free antivirus programs out there; some are good and some aren't.  Here's my take on them.

____________________________________________________________

Avast - Avast is probably the largest and best known free antivirus.  Whereas the program does a great job scanning for viruses, it is resource intensive.  And probably the worst problem is the UI.  Easily one of the worst UIs I've ever seen.  I'm scanning my system for viruses not using a car CD player (yes, if you haven't seen the program they designed it to look exactly like a car CD player).

____________________________________________________________

AVG - I'll admit I've never run AVG so I can't say much about it.  I've read reviews that said it was decent, but not as good as Avast.

____________________________________________________________

Microsoft Security Essentials - Microsoft shocked everyone late last year when they release MSE.  Even more shock at the fact that MSE was a great program.  My first exposure to MSE was a review of the top 5 free antivirus programs.  MSE was in beta at the time, it scored higher than all other programs except in scanning speed.  But the final version is faster than the beta.  Anyway, MSE is a great program.  This is now the free antivirus program I recommend to everyone.  It has a very clean UI.  The program is not too invasive.  My favorite part is the program can easily be set to either continuously monitor or only scan when I say to scan.  I use the latter because I don't like programs running all the time that slow my system down.  Give MSE a try, it's a great program.

____________________________________________________________

McAfee - McAfee has a free command-line virus scanner that is fast and simple.  There is no installation, just unzip and run.  There is no program running all the time scanning your system, it only runs when you actively initiate a scan.  It's just a super-lightweight antivirus program that's great to have.  The program is updated almost daily.  To download use FTP and visit ftp.mcafee.com/pub/antivirus/datfiles/4.x/.  The filename is sdat####.exe (the number changes daily as it's updated).  After you download it run "sdat####.exe /e" to extract the files.  After extraction the command "scan /adl /all /unzip" runs a full scan of your system, all files including compressed files.

____________________________________________________________

Spybot Search and Destroy - Whereas Spybot S&D is not a virus scanner, it does compliment a virus scanner very nicely.  It scans your system for other "problems" like spyware, adware, and malware.  Spybot S&D is very clean, simple, and fast.

____________________________________________________________

RootkitRevealer - The last tool is RootkitRevealer by SysInternals (Microsoft).  Really really nasty viruses embed themselves into your system as a rootkit.  This basically means that all standard methods of detecting the file even exists will fail.  There is no way to even see the file let alone remove it with a virus scanner.  But RootkitRevealer does reveal these files, so it's good to run this from time to time.

____________________________________________________________

Me personally I use Microsoft Security Essentials and McAfee for virus scans.  I occasionally run SpyBot and RootkitRevealer to round out the mix.

Useful Utilities - Secure Communications

I'm going to date myself with this post, but back when I was in college protocols like telnet, FTP, and HTTP were huge (HTTP was big although it was nowhere near what it is today).  Heck, even gopher was big.  Anyway, back then security was less of a concern than it is today.  From what I've noticed these older protocols are being used less in favor of their secure counterparts SSH, SFTP, and HTTPS.  Unless your Internet browser is 10 years old you have an HTTPS program.  But what about SSH and SFTP.  Last time I checked Windows did not include either an SSH or SFTP program, so that means you'll need to download them.  Below are the best programs I've found for these tasks.

SSH: Putty - The Putty web page looks old, it totally looks like a college student who just discovered HTML and created "my first web page."  But Putty is a great program.  It's a great telnet/SSH client, very simple, and has lots of features.

SFTP: WinSCP -There are a ton of SFTP programs out there.  I've downloaded and tried a lot of them and I think WinSCP is the best.  It's not the best FTP program I've used, there are some quirks with the UI - but it is the best SFTP program I've seen.  So if you need an SFTP client give WinSCP a try.

Speaking of FTP, I think my favorite FTP client would be LeechFTP.  This program had a great interface, very fast multithreaded transfers, etc.  Unfortunately the author of LeechFTP stopped working on it and it doesn't support SFTP.  But if you need a regular FTP client google "LeechFTP" and you'll find the last version.

Useful Utilities - Disc Utilities

Today's useful utility is an excellent CD/DVD utility called ImgBurn.  As the name implies ImgBurn can burn CDs and DVDs, but it does a very good job of it and it does a lot of other tasks too.  I remember a time when Windows did not come with CD burning software and Nero was free.  Now it seems all the major programs like Nero and Roxio cost money.  Windows does come with built-in CD burning software which works good, but I find it a bit limited.  As far as I know, you cannot burn images (ISO files) with it.  I'm also not sure if you can burn audio CDs.

ImgBurn is a program I only discovered a few months ago.  It's very simple, it lacks all the fancy UI found in Nero and Roxio - but this is a good thing in my opinion.  All it does it is write and rip CDs/DVDs.  For writing you can either provide an ISO file (which I typically do) or you can select files like any other program.  It also rips discs, but I've never used that feature.

While we're talking about disc utilities, I'd also like to mention CDCopy.  CDCopy is a program I've used in the past to rip and encode audio CDs to MP3s.  Since I haven't used the ripper in ImgBurn I can't say how it compares, but CDCopy does have one feature I really enjoy.  It's called "Classical Mode" and when enabled it will rip and encode audio CDs as one continuous audio track.  Most programs rip and encode each track separately which is what you want most of the time.  But I have a lot of classical and techno CDs which, although they contain multiple tracks, play as one continuous song.  So this feature is very useful.

ImgBurn and CDCopy - two great (and free) disc utility programs that are worth looking into.