I have the Belkin usb dongle 802.11g v4. I tried what I believe was an OSX 10.3 driver and installed a network utility, but it didn't detect my usb dongle. Crash, See Belkin Chipsets to determine which chipset Belkin is using in your FD7050. Oddly enough belkin used 3-4 different chipsets depending on the revision. Happily, most of them are supported on a Mac. Below is the info from that page in case it disappears.
I have a USB device that I use on a daily bases and it Linux and Windows drivers. I would like to use this device in Mac OS X (meaning not through a VM). Is it possible? Note that the drivers appear to contain source.
edit
System requirements from the read me:
- Linux 2.4 or 2.6
- System setup for kernel compilation.
1 Answer
No. The kernel interfaces are completely different. Though MacOSX and Linux are both UNIXes-ish (in fact, Mac OS X is 100% UNIX Certified) they're vastly different in architecture. Your best bet would be to try VMWare and use a Linux instance under VMWare to try and access it.
EDIT: I just saw your edit, saying you have source and don't want VMWare. I'd still say no. The underpinnings of Linux and MacOSX are radically different. The source wouldn't 'just work' unless someone made it work specifically for MacOSX. I'd check the source for '#ifdef darwin' or something similar to that, it won't work. You'd have to have the right version too - Apple changes it's kernel enough between major releases that a very old port may not work.
Many years ago, there was a project for device drivers to be portable across platforms. It was called Project UDI. The theory was to have a Device Driver Environment in your kernel. The APIs would be consistent across all OSes. Device drivers were source code compatible everywhere, and binary compatible (what you would like) across machines with the same ABI (x86, AMD64, etc). There was a port I remember for Darwin, but I think it was much more theoretical on MacOSX than anything.
The environment worked technically (it actually shipped as the native Device Driver Interface for UnixWare, with the old DDI a compatibility layer on top of UDI) but flopped for human/political reasons. Having SCO/Caldera as the main push for the project didn't help much. For an OS with good driver support (say, Solaris, Windows) having those drivers is an advantage over kernels that don't, so the only support would come by definition from OSes that didn't have drivers, and not a lot of influence. Stallman didn't like it much either - binary compatibility would make it less likely (he posited) to ship source for drivers.
Rich HomolkaRich HomolkaWriting Linux Drivers
Not the answer you're looking for? Browse other questions tagged linuxmacosmacusbdrivers or ask your own question.
This document was prepared based upon Ubuntu 6.10 (Edgy Eft) distribution, but other versions should be usable as well.
In addition this procedure has been tested successfully on other Linux distributions.
If installed correctly the rt73 devices provide impressive plug and play wireless networking.
This should work for other devices that are compatible with the Ralink rt73 driver as long as the device's USB ID is put into the rtmp_def.h per the procedure below.
Additionally supported devices include:
Linksys WUSB54GC USB Device 13b1:0020
D-Link DWL-G122 Rev B1 USB Device 2001:3c00
Linux Drivers For Brother Printers
D-Link DWL-G122 Rev C1 USB Device 07d1:3c03
Conceptronic C54RUv2 USB Device 14b2:3c22
As well as any other devices that are supported by the rt73 driver.
For this example we assume that we are building the device in the user's home directory.
Note: I have only tested this using 128bit (104bit) WEP.
Step 1 - Disable Competing Driver
You need to blacklist the existing rt73 module which is not working:
add the following three lines to the end of the file:
Save the file. The blacklisted module will not be loaded from now on.
Step 2 - Prepare the Linux build environment
You will need to install the essential build files to compile the driver:
Install the correct headers for your version of Ubuntu: (don't worry if it tells you that yours are up to date.)
Install the todos and fromdos utilities for converting files from DOS/Windows text to UNIX text (required later in the process):
Step 3 - Download the latest version of the Ralink RT2571W/RT2671 USB driver
The driver can be found at: http://www.ralink.com.tw/Home/Support/Linux.html
The latest at the time I am writing this is: http://www.ralink.com.tw/data/RT73_Linux_STA_Drv1.0.3.6.tar.gz
You can get the driver into your current directory with the following wget command:
Step 4 - Extract and prepare the archive
Using tar extract the archived driver and change directory into the build area. Note, this is the 'Module' sub-directory of the extracted tree.
The permissions are not correct on the files, so change them to 755 using chmod:
Change all of the files to the UNIX text type:
Copy the Makefile.6 file into the Makefile to prepare for a 2.6 Linux kernel build:
Edit the file rtmp_def.h and near the end of the file is a section that deals with the USB IDs of the devices that the driver works with. You will have to add your device's USB ID, in this case we add the IF for the F5D7050 ver 3000. Did you use chmod above to make the files read write for you?
You must add your device's USB ID to the file immediately after the #define RT73_USB_DEVICES comment, unless it is listed in the original. The entries above the device 0x148f,0x2573 are those that I have added for various new devices. Make a copy of the first entry and change it to the correct USB_DEVICE for your card, found by the output of lsusb: (Note: I am adding additional examples for other devices below the Belkin F5D7050 ver 3000 entry.)
Save the file.
Step 5 - Create and install the driver using make
Make the driver with the make command:
This will take a while. There will be warnings, but there can be no errors or the build will not complete.
Note: Should you see errors regarding get_wireless_stats during make, open rtmp_main.c in a text editor and find the line #if WIRELESS_EXT >=12, and comment out the line following it, like so:
Using sudo make install we install the complete driver into the 'extra' directory of your kernel modules:
Linux Drivers For Epson
Verify that the driver was installed correctly using the list short command:
Belkin F5d7050 Driver Windows 7
You should see the file rt73.ko
Create the directories necessary for storing the firmware for the driver:
Copy the rt73.bin and rt73sta.dat files into the newly created firmware directory:
Step 6 - Configure the network settings for the rt73 device
The rt73 device requires the use of the ip link set dev rausb0 up command to wake the device for configuration. The Networking applet does not allow for this, so we are going to modify the /etc/network/interfaces manually. You can use the Networking applet to bring the device up an down once it is configured, but you cannot make any changes unless you make the appropriate changes in interfaces using a text editor.
You could use the Networking applet to make the initial entries and then change the entries manually using a text editor so that the ip link set dev rausb0 up is added immediately after the first line of the device entry.
Using the Text Editor (gedit) we need to modify the interfaces file to get the device started correctly:
Dynamic Address Assignment using DHCP: Add this data at the end of the file for a DHCP setup: (Choose one key type, either hex or ASCII, but not both, uncomment one, and fill in your key.)
Static IP Address Example: Add this data at the end of the file for a static IP address setup: (Choose one key type, either hex or ASCII, but not both, uncomment one, and fill in your key.) You may have better luck by setting up the device using the Networking applet and the modifying the record and adding the necessary 'pre-up ip link set dev rausb0 up' line. If you do so make sure that you do not end up with more than one line that says 'auto rausb0'.
Warning, if the 'pre-up ip link set dev rausb0 up' line is not put in correctly the device will not be plug and play. This is a critical difference between the rt73 devices and most other wireless adapters.
Step 7 - Install Module
Check that your computer knows the device exists.
If rausb0 is present it is time to connect to the internet.
The output rausb0 should be similar to the following,
Free Download Linux Drivers
In this example we know that the access point with the ESSID 'MY_ESSID' has been found, because we can see that the 'Access Point:' field has been filled in with the access point's MAC identifier.
Note that the Frequency is listed as 1 MHz, but this is actually the channel number, this is a feature of the present driver implementation.
If you configured your network correctly you should see that your ESSID is set for your access point and that the Access Point Media Access Code identifier has been filled in with your access point's MAC identifier.
Step 8 - Controlling the device
You can now control the device with ifup and ifdown:
Removing and inserting the device should remove and setup the network correctly. Don't forget that it takes about 10 - 15 seconds for the system to set the device up for networking. If you have forgotten and your access point is not on, the device should find it as soon as you do turn it on.
Run a ip route command, and you should see that the correct routing is setup:
The output should be similar to this example:
In this case, 192.168.1.1 is the gateway's address.
Credits
Ralink - For providing a stable rt73 driver, which they licensed under the GPL.
Yawnster - For exposing me to the Ubuntu Help Forum and its documentation.
Necessary Changes or Questions
Please contact FrodoB through a private message or through the Networking & Wireless section of the forums if you see items that need to be clarified or improved upon. Thank you very much.