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?