ZyXEL AG-225H on Linux

The ZyXEL AG-225H is a USB wireless access device capable of 802.11 a/b/g and is even USB 2.0 ready. It includes an LCD screen and can be used for network scanning without a PC. Best of all, once a network has been found simply plug the device into an available USB port and you’re connected.

On Linux, the zd1211 driver can be used to access the AG-225H. There is a version officially supported by ZyXEL but at the moment the open source release is most compatible. You will need the kernel development utilities installed, which can be added using yum install kernel-devel. Note that these instructions also assume you are running Fedora Core 4 or a similiar distribution.

Unfortunately, this driver does not currently recognize the AG-225H and you will need to make a slight modification to src/zdusb.c. In the list of recognized USB devices, add the following:

{ USB_DEVICE(0x0586, 0x3409) }, // Zyxel ZyAIR AG-225H

After making this update, return to the root directory and compile everything. Watch closely to verify there are no errors, once everything compiles successfully use make install to copy the module into place.

When the module is in place, invoke modprobe zd1211 to load the driver. Assuming this succeeds, iwconfig should now report a wireless network adapter wlan0. Note that if there are other wireless adapters on your system, this may receive a different identifier and you will need to make appropriate changes to the configuration outlined below.
The next step is to make everything automatic. Modify /etc/modprobe.conf to include the following entry:

alias wlan0 zd1211

This ensures that the driver is loaded for your wlan0 port. Next, create a /etc/sysconfig/network-scripts/ifcfg-wlan0 with settings similiar to the following:

IPV6INIT=no
DEVICE=wlan0
BOOTPROTO=dhcp
TYPE=Wireless
ONBOOT=yes
ESSID=????
MODE=Managed
Rate=Auto
CHANNEL=?
USERCTL=no
KEY=??????????

Be sure to substitute your ESSID and encryption KEY, this configuration also assumes you are WEP encrypting your data. Although your channel number is not required, it should reduce adapter initialization time.

At this point, ifup wlan0 should bring the ZyXEL device online and it will immediately attempt to obtain an IP address from your DHCP server. Watch your logs closely in /var/log/messages in the event that something should go wrong.

Finally, after building this device for your kernel and making these configuration changes you will want to keep a copy of this source code around for future kernel updates. Probably placing this into /usr/src or some similiar location will help you keep this for future updates.