ASUS WL-138G is a 802.11G WLAN Card. It uses Marvell W8300 chipset.ASUS WL-138G is not supported in Linux. There are no native drivers available for WL-138G in linux.
After trying in vain to find any driver that could make it work under linux, I found ndiswrapper. It implements Windows kernel API and NDIS (Network Driver Interface Specification) API within Linux kernel. A Windows driver for wireless network card is then linked to this implementation so that the driver runs natively, as though it is in Windows, without binary emulation.
Download ndis and install it. Details on installing ndiswrapper are available here
Also, The driver that comes along with the card, from ASUS, it not all that good. In windows, I found that the signal strength was quite less when it should not be. Since D-Link DWL-G510 uses the same chipset, I downloaded the drivers from here.
The driver file, dwlg510_driver_100.zip, contains two cab files. The files we require are inside “data2.cab” file. Since these cabfiles were created using installshield, we would need the utility “unshield“. Install unsheild to extract the files from the cab file.
root@localhost /usr/local/src> unshield x *.cab
Like in Windows, we would need the .inf (driver info) and the .sys (driver) files. Copy them to /usr/local/ndis (or any directory. Both files should remain under the same tree).
root@localhost /usr/local/ndis> ndiswrapper -i mrv8k51.inf
root@localhost /usr/local/ndis> ndiswrapper -l
Installed ndis drivers:
mrv8k51 driver present, hardware present
The last step is to load this driver into kernel…
root@localhost /usr/local/ndis> ndiswrapper -m
You should then see a message along the lines of: Adding “alias wlan0 ndiswrapper” to /etc/modprobe.conf
root@localhost /usr/local/ndis> modprobe ndiswrapper
Now, the driver has been installed and the card should be active. Use the/any network-setup utility to install the card. (should be visible as wlan0).