Webcamd is a port of the Video4Linux USB webcam and DVB drivers into userspace. It’s been available as a FreeBSD port since January and comes installed with PC-BSD. When Hans Petter Selasky ported these drivers he knew there “were a lot of them, probably many hundreds”. However, it was hard to quantify exactly how many existed and exactly what hardware was supported as this information is scattered throughout thousands of src files and dozens of websites and wiki pages (possibly containing incomplete or outdated information).
It took a while to research what hardware is (in theory) supported by the various drivers; in doing so, I ended up with a spreadsheet that currently contains 1396 entries. That information was used to create 46 man pages (45 driver man pages and 1 for webcamd itself) which have now been added to the port. If you already have webcamd installed and are comfortable updating FreeBSD ports, you can upgrade to the latest version of webcamd. If you’re using PC-BSD, you can wait for next month’s 8.2 release as the latest version of webcamd will be installed with it. Or, if you’re impatient and want to check out the man pages now, you can uninstall the current version and install the new version as the superuser:
pkg_delete –x webcamd && pkg_add –rf webcamd
Once you have the latest version of webcamd, try these commands to see which man pages interest you:
apropos webcamd | more
The driver man pages contain the VendorID:ProductIDs of previously documented known devices. To determine the ID of a device, use one of the following commands on either a FreeBSD or PC-BSD system:
usbconfig dump_all_config_desc | grep vendor (if the device is an inserted USB device)
Here is an example for when I insert a USB camera:
usbconfig dump_all_config_desc | grep vendor
ugen3.3: product 0x0991 vendor 0x046d at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
I could then quickly check to see if that ID is known to be supported from the webcamd man pages:
gzcat * | grep “046d:0991″
Since I just get my prompt back, support for this particular device isn’t currently documented, so I’ll check just the VendorID:
gzcat * | grep “046d”
This will provide an ordered list of all known to be working Logitech products. From the list, the last documented ID is 046d:08dd.
I know that the information from existing resources is out-of-date. You can help to improve the man pages by letting us know the VendorID:ProductID of any cameras that work for you and which currently aren’t listed in the man pages. Also, if you come across an ID that is supposed to work but does not, please send us the details so we can update that information in the man pages.
For now, leave a comment or send me an email with the information about the device. If it turns out to be useful to do so, we’ll throw up a wiki page where needed changes can be posted and addressed.
Does your wireless device use the iwi(4) driver? Bernhard Schmidt is working on some patches to resolve some of the known issues with this driver and is looking for testers. If you’re interested in helping out, follow the instructions on the iwi wiki. If you need help getting started, you’re always welcome to join us on #pcbsd on IRC freenode. We can help you write up your bug report or help you review your findings before sending them off to Bernhard.
The ndisgen(8) utility can be used to convert an existing Windows network driver to a FreeBSD kernel loadable module. This can allow you to access network devices for which a FreeBSD driver doesn’t currently exist (typically wireless drivers). The utility has been around for a while and typically works well on 32 bit systems. However, users on 64 bit systems often experience kernel panics or drivers that load but don’t do anything.
Paul Mahol is working on improvements to ndisgen and is looking for testers so that it can be tested on as much hardware as possible before the improvements are committed to the FreeBSD repository. If you have a network device without a FreeBSD driver, you can help (and possibly get yourself a working driver!) by doing the following:
As the superuser, use the download link on the NDISulator page to download either the .tgz or .zip file.
Update: on 9.0, use this download link instead.
Uncompress that file to /tmp, then:
Download an XP or Windows 2003 driver for your device and make note of the locations of the .inf and .sys files that came with the download. Make sure you download and use the files that match your architecture (32 or 64 bit). Run the interactive script and input the paths to those files when prompted:
Once the conversion is complete, the script will indicate the name of the kernel module (it will end in a .ko extension) which was created in your current directory. After exiting the script, try to load the driver:
cp driver_name.ko /boot/modules
If all went well, the network device should now be accessible using ndis(4) as described in the FreeBSD Handbook. When you are finished, don’t forget to:
If things went well, take a moment to double-check that your device is mentioned in Table 1 of the Wireless Testing page and add it if it is not.
If all did not go well, head over to the Ndisulator Wiki. Take a minute to read its content (it’s short and sweet), especially the Making useful bug reports page. If you don’t have a github login, you can create one here so that you can submit your bug report here.
We did some testing on 3G modems at OLF and loading the u3g driver seems to do the trick (earlier versions of FreeBSD had a conflict between u3g and umass but this seems to be fixed now). You can load the driver by issuing this command as the superuser:
If you would like the driver to autoload at boot time, carefully add this line to /boot/loader.conf:
Lars Engels also provided a useful link containing an exhaustive list of APNs, usernames and passwords.
Please let us know if further configuration settings are required (i.e. which are currently not possible to do within the System Network Configuration utility) in order to get your modem to work.
The latest NVIDIA driver is now available through Update Manager for both 32 and 64 bit systems. From the release highlights:
- Fixed a bug that prevented XvMC from initializing in most cases.
- Added support for xorg-server video driver ABI version 8, which will be included in the upcoming xorg-server-1.9 series of releases.
- Fixed a bug that caused extremely slow rendering of OpenGL applications on X screens other than screen 0 when using a compositing manager.
- Fixed a regression introduced after 256.35 that caused stability problems on GPUs such as GeForce GT 240.
- Fixed a slow kernel virtual address space leak observed whenstarting and stopping OpenGL, CUDA, or VDPAU applications.
- Fixed a bug that left the system susceptible to hangs when running two or more VDPAU applications simultaneously.
Instructions for using the update can be found by clicking the View Details button in the System Updates tab of Update Manager.
Having a searchable list/database of supported hardware is always a good thing and something we don’t currently have. This recent thread in the Advocacy forum suggests a layout similar to Haiku’s hardware page.
We can add a similar page to the PC-BSD website, but definitely need your help researching information to include. Beyond the FreeBSD Hardware list and the FreeBSD Laptop compatability list, are you aware of other lists of supported hardware? Are you aware of any OEMs that provide supported hardware?
Also, we’re looking for suggestions on where to put this info on the website so it is easy to find. Is there a current entry in the menu bar that makes sense to link to? Should another entry be added to the red menu bar or the white area above it? Should a button be added somewhere else on the main page? If so, any takers on designing such button?