# SMC SMCWUSBT-G usb Stick



## mururoa (May 5, 2010)

Hello,

I received today my SMC USB stick. I need an USB Stick since I have no other working lan on my laptop.
I'm using 8.0-STABLE.
Looking in the man of uath driver that support this stick it seems that there is nothing much to do outside the wifi configuration.
The uath driver is already in the kernel (GENERIC) with all other needed modules.
My problem is that I see a message when connecting the device (ugen0.4: <SMC> at usbus0) but I'm unable to get any lan interface that I could configure (should be uath0) and the only error message I can see is : 
	
	



```
Unknown USB device: vendor 0x083a product 0x4505 bus usb2
```
I try to `uathload -d /dev/ugen0.4` but I get the error operation not permitted.
What's wrong ?


----------



## mururoa (May 6, 2010)

Searching more, it seems that the device ID is not what FreeBSD is expecting for this device. Maybe some US / UE device ID difference. So I may add the correct device ID in dupplicating the line where is the expected device ID and correcting it.
But where is that located ?


----------



## mururoa (May 6, 2010)

I found it and there is nothing to correct. The device is there with right device ID.
I guess that after 4 not working lan devices on that laptop that I'm gone to install some linux flavor instead of FreeBSD


----------



## SirDice (May 6, 2010)

Instead of just buying something and expecting it to work I would suggest finding out what's supported before spending money.


----------



## mururoa (May 6, 2010)

SirDice said:
			
		

> Instead of just buying something and expecting it to work I would suggest finding out what's supported before spending money.



That's just what I've done. Wifi should be atheros on this laptop but later Samsung changed to Realtek. And this USB wifi stick IS supposed to be supported. See man uath. Supposed to work but not working.


----------



## SirDice (May 6, 2010)

I have found that with relatively cheap hardware manufactures sometimes change the specific chipsets used. Slightly different models which prevent them from working.

If it's the exact same make/model I would create a PR about it. 

http://www.freebsd.org/send-pr.html


----------



## jintxo (Aug 10, 2010)

Hello there Mururoa. I have the same stick you do (vendor 0x083a product 0x4505) and after googling for days and messing around with man pages and everything, I have finally gotten it working (posting with it right now . I have had to move my computer far away from the dsl router so I could no longer use CAT5 cable and thought my device would be 100% supported by FreeBSD, since I had already researched this before buying it.

Here's what I had to do, in the end it was simple...

It turns out the stick (at least in my case I guess your probably too) does not need the "uath" driver, but the "zyd" driver. I already suspected this since I also run linux and everything everywhere pointed to ZD1211B which is "zyd" not "uath".

After knowing this, I checked out the file /usr/src/sys/dev/usb/usbdevs and I found that the stick is listed in there (search by vendor ID and later by device ID) so the next step was to get the zyd driver to recognize it.

For this I edited /usr/src/sys/dev/usb/wlan/if_zyd.c and found the place where the supported devices are listed. I added mine, recompiled and it works fine (I do get a device timeout every one in a while, but that's fine for now I'm just happy it works .

Find the following lines in that file. The 4th one is the one I personally added to it:


```
/* ZYD_ZD1211B */
        ZYD_ZD1211B_DEV(ACCTON, SMCWUSBG),
        ZYD_ZD1211B_DEV(ACCTON, SMCWUSBG_NF),  <--- this is mine
        ZYD_ZD1211B_DEV(ACCTON, ZD1211B),
        ZYD_ZD1211B_DEV(ASUS, A9T_WIFI),
```

With that and the wireless section of the handbook, I'm set. 

Oh, I'm on FreeBSD 8.0 too! I am eventually going to track 8.1 or HEAD just to see if the driver has improved at all but I don't believe it has.

Good Luck !!

Cedric


----------



## wblock@ (Aug 11, 2010)

jintxo said:
			
		

> For this I edited /usr/src/sys/dev/usb/wlan/if_zyd.c and found the place where the supported devices are listed. I added mine, recompiled and it works fine (I do get a device timeout every one in a while, but that's fine for now I'm just happy it works .
> 
> Find the following lines in that file. The 4th one is the one I personally added to it:
> 
> ...



If you haven't already, please submit a patch for this, or contact the driver author.  Thanks!


----------



## jintxo (Apr 2, 2011)

*heads up*

Just a heads-up to let you know that the device ID is now in current HEAD source, compiling as we speak to verify that it works ok 

Cedric


----------



## ckrosco (Apr 23, 2011)

*recompiled*



			
				jintxo said:
			
		

> For this I edited /usr/src/sys/dev/usb/wlan/if_zyd.c and found the place where the supported devices are listed. I added mine, recompiled and it works fine (I do get a device timeout every one in a while, but that's fine for now I'm just happy it works .
> 
> Find the following lines in that file. The 4th one is the one I personally added to it:
> 
> ...



I am using FreeBSD 8.1 and have the same hardware USB stick.

I have edited the file /usr/src/sys/dev/usb/wlan/if_zyd.c as stated above. I am not sure of "recomplile" but this is what I tried:


```
#cd /usr/src/sys/modules/usb/zyd
#make
#make install
```

Is that correct? I have done all the subsequent steps but my device is still not being recognized.


----------



## wblock@ (Apr 23, 2011)

Your device may have a different product ID, but it would help if you could be a lot more specific about what you've done and what happens when you attach the device.


----------



## ckrosco (Apr 24, 2011)

I have the same product ID as per usbconfig:


```
# usbconfig 
ugen4.2: <USB2.0 WLAN SMC> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
#usbconfig -d 4.2 dump_device_desc
ugen4.2: <USB2.0 WLAN SMC> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x00ff 
  bDeviceSubClass = 0x00ff 
  bDeviceProtocol = 0x00ff 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x083a 
  idProduct = 0x4505 
  bcdDevice = 0x4810 
  iManufacturer = 0x0010  <SMC>
  iProduct = 0x0020  <USB2.0 WLAN>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001
```


```
# more /boot/loader.conf
<stuff edited out>
# Load Wireless Support
if_zyd_load="YES"
```


```
# more /etc/rc.conf
<stuff edited out>
wlans_zyd0="wlan0"
ifconfig_wlan0="DHCP"
```


```
# ifconfig wlan0
ifconfig: interface wlan0 does not exist
```

The device is not being recognized, so nothing happens when it is attached. I know the device works from testing it on a Windows machine.

Any help is much appreciated.


----------



## wblock@ (Apr 24, 2011)

Does the output of *ifconfig* show that the zyd0 device is being created?


----------



## ckrosco (Apr 24, 2011)

No, *ifconfig* doesn't show anything about zyd0


----------



## jintxo (Apr 24, 2011)

*kernel recompile*

Hi ckrosco,

with "recompile" I meant compiling and installing the kernel after making the mentioned modification to the if_zyd.c file.

There is a section of the FreeBSD handbook that talks about compiling and installing a custom kernel that will be of very valuable help to you for this.

Regards,

Cedric


----------



## ckrosco (Apr 26, 2011)

Hi Cedric,

Thanks for the tip. I tried building and installing the kernel, but now the system crashes whenever I plug in the USB stick. Even on booting, if the USB stick is plugged in, the system crashes.

But this is the first time I have tried building the kernel, so perhaps I am missing some important detail. Everything else seems to work, so I will continue to experiment.


----------



## wblock@ (Apr 26, 2011)

You should not need to rebuild the whole kernel.  Actually, you do need to build a new kernel, since the zyd device is included in the GENERIC kernel.  For now, comment out the two lines in /etc/rc.conf.  The line in /boot/loader.conf isn't needed anyway.  Reboot the machine, and attach the USB stick.  Then see if there's a zyd0 device with ifconfig.


----------



## ckrosco (Apr 26, 2011)

wblock - when I comment out the lines in rc.conf the computer no longer crashes when the USB stick is connected. But still nothing about zyd0 with ifconfig


----------



## wblock@ (Apr 26, 2011)

Until you figure out why the driver isn't attaching to the device, nothing's going to work.

For a start, you should probably update to FreeBSD 8.2 or 8-stable or even -CURRENT.


----------



## ckrosco (May 1, 2011)

I updated to 8.2 and now the device is recognized. Yea!! :beergrin

Thanks for all your help.


----------

