D-Link DWA-110 USB Wireless Adapters & Mac OS X 10.4
I'd heard that the D-Link DWA-110 USB adaptor might work, but I'd also read of some problems. As I had access to one, I thought it was worth giving it a try anyway. These D-Link adapters are quite cheap - around $40-$50 (Australian) - and were readily available at computer stores like Harvey Norman and JB-Hi Fi when this article was written.
Note that D-Link does not claim that the unit is compatible with MacOS X, and does not provide drivers for it. Nonetheless, the chipset in the adaptor is the same as that used by another vendor (Ralink), and those drivers are available online for download.
Before reading further, please note that I'm documenting my experience here in the hope that others may find it useful. If your experience is different to mine, it could be for any number of reasons. While I welcome comments and feedback on what I've written below, I cannot help you with this process if it does not work for you.
Getting the Ralink driversDrivers that work with this D-Link adaptor can be downloaded from the Ralink web site at:
http://www.ralinktech.com/support.php?s=3 (link updated September 13, 2010)
There appear to be 4 different drivers available for different Ralink chipset-based devices. The version I used was the version labelled USB (RT257x/RT2671), posted on 12 April, 2008. The download is a .dmg file with driver versions for 10.3, 10.4 and 10.5 (which are in separate folders on the disk image).
Installing the driver softwareThe software is in a standard .pkg file, and is installed using Apple's standard Installer application. After the package is installed, the system must be rebooted.
The Ralink software consists of the following components:
• a pair of kernel extensions, installed at
• a StartupItem, installed at
• a GUI application, installed at
• and another application installed at
The GUI application (USBWirelessUtility) is the user interface to the driver, and is used to specify the wireless network settings and also start the network connection. The second application (AwakeRalinkUI.app) seems to exist only as a way to launch the first (it is most likely called by lower-level components in the driver software in order to launch the GUI application whenever the network is not yet up).
Things to be aware ofThere are a couple of important things to note when using the Ralink software with these USB adapters.
The Ralink drivers do not make the WiFi adaptor appear to the system as a replacement for the Apple WiFi card. Instead, the driver software creates a new virtual ethernet adaptor.
The WiFi network is not joined until a user has logged into the system and the GUI application has been launched. (In other words, no networking is available until after a user has logged in. The network remains operational from that point, even if that user logs out. This means the dongle is not appropriate for situations where networking is required at all times, unless the system is set to automatically log in.
The GUI application can be launched manually, but at installation time, the other application (AwakeRalinkUI.app) is added to the "Login Items" list for the current user, ensuring the GUI application launches automatically when the user logs in. This application can be removed from the Login Items list, and the GUI application will still automatically launch shortly after login if the network is not up. It seems that the low-level driver itself cannot initiate the network connection, and uses the GUI application to do this.
Creating a profileBefore connecting to a wireless network, you need to create a Profile, which defines the wireless network settings. These are created and managed with the USBWirelessUtility application. This application launches automatically if the system is not yet connected to the wireless network.
I've observed some "flakiness" at times with this application - for example, it has randomly deleted profiles, and at times reverted the settings in a profile to previously-deleted values. In addition, it will disconnect from the wireless network if a connection already existed when it was launched.
Despite this, once I got everything working as described here, the connections have worked flawlessly, and reconnect whenever I restart the computer (and log in). The only minor issue is that it can take as long as 60 seconds for the connection to the WiFi network to be made after the GUI application has started.
To create a profile, select the Profile tab in the USBWirelessUtility application, and click the add button:
A sheet will drop down, allowing you to enter the wireless configuration. First, enter the SSID of the network you are connecting to in the upper right, and then enter the other details:
Note that there are two tabs on this sheet - System Configuration and Authentication & Security. Don’t forget to enter details on both tabs, and then click the OK button:
Once you have the profile established, you should be able to connect to the wireless network by clicking the activate button. Once the connection is made, the red square in the left-hand column will change to a green square:
(Note that once a working profile is in place, the USBWirelessUtility application will attempt to connect to the network if defines whenever it launches). After the connection is in place, you can check the signal strength and other statistics with the Link Status tab.
Once a connection is established with the WiFi network, you can quit the application.
Ensuring all users can use the softwareOne problem with USBWirelessUtility.app is that it is installed with an odd permission on the nib file inside the application bundle. This prevents anyone except the user who installed the software from running the application, and this in turn means that if the network is not already up, a non-admin user is unable to connect to the wireless network.
To correct this problem, while logged in as the user who originally installed the driver software, enter the following command in the terminal window:
chmod 755 /Applications/USBWirelessUtility.app/Contents/Resources/English.lproj/WirelessUtility.nib
If you have more than one user on your system, and each has a separate account, you would normally need to recreate the network profile as described above for each user. Fortunately, the application stores its settings in a standard plist file, and it is quite easy to move this to a central area so that all users get the default network profile.
If you want to do this, first ensure you have created a working profile. Ensure that USBWirelessUtility.app is not running, and in the terminal, enter these commands:
chmod 444 com.Ralink.RaConfig.plist
mv com.Ralink.RaConfig.plist /Library/Preferences
Now, whenever any user logs in, and there is no network connection in place, USBWirelessUtility.app will launch, and (after a period of 30-60 seconds) will connect to the network (at which point, you can quit the application).
During installation, a Login Item will have been created for the user installing the software. It’s not a bad idea to remove this - the driver will launch the GUI application on login if a network connection is not already in place, and if there is a connection in place, you don’t want the application launching, as it will disconnect and then reconnect.
To remove the login item, open the Accounts system preference tool, and select the Login Items tab. Select the AwakeRalinkUI icon, and then click the “minus” button at the bottom of the list.
Some things to remember or be aware of:
- WiFi network passwords are stored in plain text format in the preference file, which means any user on your system can easily determine your wireless network password.
- I’ve only tried this on Mac OS X 10.4. Ralink provide drivers for 10.3 and 10.5, and I have no reason to believe that things won’t be substantially the same on those versions of the OS.
- The software is definitely “flakey” in terms of creating a working profile, but once I did manage to create a profile, and moved it to the /Library/Preferences area, it was 100% reliable in terms of creating a connection for any user who logged in, and in terms of staying up for long periods of time without disconnecting.