Mustakim

11 hours ago
‹ chat status

Profile

Name:
Mustakim
Location:
,
Birthday:
11/20/1981
Status:
Single
Job / Career:
Government

Stats

Posts:
198
Post Reads:
11,680
Photos:
6
Last Online:
11 hours ago
Technorati:
blog reactions

Users Chatting

View All »

My Friends

46 min ago
1 hour ago
2 hours ago
3 hours ago
3 hours ago
5 hours ago
5 hours ago
5 hours ago

Subscribe

Computing & Technology > Huawei E 220 on Freebsd

  Huawei E 220 on Freebsd

other refer if this method fail: http://www.tnpi.biz/computing/freebsd/crystalfontz.shtml

I tested on FreeBSD 7, 6.3 and DesktopBSD 1.6 and one of them (FreeBSD 7) still fail. I think, the configuration of Huawei E220 on BSD is depend on your luck as I has made to Microdia webcam which everybody knows Microdia is not one of Linux's supported webcam

Getting it to work has been an interesting challenge.

The E220 is by default (FreeBSD 6.3-BETA) recognized as an umass(4) (USB Mass Storage Device) device. That's true, there is a memory disk in it. It is recognized as /dev/cd0 and you can mount it with mount_cd9660 /dev/cd0 /mnt, giving you 10 megabytes of space.

But that is not what you bought the E220 for. You want to use it as a modem. You need to change a couple things in your kernel to get it all working. First, add a line to /sys/dev/usb/usbdevs:





/* HP products */ product HP2 C500 0x6002 PhotoSmart C500 /* HUAWEI products */ product HUAWEI MOBILE 0x1001 Huawei Mobile +product HUAWEI E220 0x1003 Huawei E220 HSDPA USB Modem /* IBM Corporation */ product IBM USBCDROMDRIVE 0x4427 USB CD-ROM Drive


And to /sys/dev/usb/usba.c:




{ USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3G }, /* Option GlobeTrotter 3G QUAD */ { USB_VENDOR_OPTION, USB_PRODUCT_OPTION_GT3GQUAD }, /* Huawei Mobile */ { USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_MOBILE }, +{ USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E220 }, { 0, 0 } };


Second, you have to disable the umass(4) device from your kernel configuration and rebuild a new kernel. Will this break things? Most likely, specially when you have USB disks and sticks. But you will load it as a module, which will undo the damage you just did to it. In your /boot/loader.conf, add the following lines:




ubsa_load="YES" umass_load="YES"


ubsa(4) is the USB support for Belkin serial adapter. That sounds more like a modem. Next, reboot the machine and see if all modules are loaded correctly:




# kldstat
Id Refs Address Size Name
1 20 0xc0400000 72e17c kernel
2 1 0xc0b2f000 e6a4 if_iwi.ko
3 3 0xc0b3e000 2f9c firmware.ko
4 1 0xc0b41000 6cdc ugen.ko
5 1 0xc0b48000 75b4 umass.ko
6 1 0xc0b50000 7958 ng_ubt.ko
7 2 0xc0b58000 cb78 netgraph.ko
8 1 0xc0b65000 2ef0 ubsa.ko
9 2 0xc0b68000 4374 ucom.ko
10 1 0xc0b6d000 5c304 acpi.ko
11 1 0xc4868000 30000 iwi_bss.ko


Next, plugin your E220 and see what happens:




ucom0: HUAWEI Technologies HUAWEI Mobile, rev 1.10/0.00, addr 2 ucom0: Could not find interrupt in device_attach: ucom0 attach returned 6


Something is wrong. But a little bit of finger skill will resolve it. At the USB modem side of the USB cable (not the computer side!), carefully pull the cable from the modem and when you see this on your screen, plug it back in:




ucom0: at uhub1 port 1 (addr 2) disconnected ucom0: HUAWEI Technologies HUAWEI Mobile, rev 1.10/0.00, addr 2


It's loaded! If it doesn't work at the first go, try it a couple of times more. Once you are without the dreaded "Couldn't find interrupt in" message you are a happy person.

Check /dev/cuaaU0, it exists! If you have comms/minicom installed, you can do this:




OK
ATI
Manufacturer: huawei
Model: E220
Revision: 11.117.06.00.100
IMEI: 358191018517800
+GCAP: +CGSM,+DS,+ES
OK



And if you dial out, you will end up with a whooping 7.2Mbps connection;




OK
ATDT *90#
CONNECT 7200000


Now it is time to train ppp(1). Add this to your /etc/ppp/ppp.conf:




three:
set device /dev/cuaU0
set speed 57600
set phone *99#
set authname
set authkey
set ifaddr 10.0.0.1/0 10.0.0.2/0 0.0.0.0 0.0.0.0
set vj slotcomp off
add default HISADDR


And dial:




$ ppp three
ppp> dial
Ppp>
PPp>







p/s:That's not good, there should be three capital P's... Going through the PPP log, you will see that the IPCP layer doesn't get initialized properly. Why? No idea. How to resolve it? Put your USB modem in a windows machine, run it once there and put it back into your FreeBSD machine. Why? No idea.


Dial again:




$ ppp three
ppp> dial
Ppp>
PPp>
PPP>

$ ifconfig tun0
tun0: flags=8051 mtu 1500
inet 119.11.32.164 --> 10.0.0.2 netmask 0xffffffff
Opened by PID 22997

$ ping www.freebsd.org
PING www.freebsd.org (69.147.83.33): 56 data bytes
64 bytes from 69.147.83.33: icmp_seq=0 ttl=48 time=477.662 ms
64 bytes from 69.147.83.33: icmp_seq=1 ttl=51 time=416.606 ms
^C
--- www.freebsd.org ping statistics ---
3 packets transmitted, 2 packets received, 33% packet loss
round-trip min/avg/max/stddev = 416.606/447.134/477.662/30.528 ms


Your console and /var/log/messages will be spammed with "kernel: ucom0: usba_request: STALLED" messages for some reason.
#####################################################################################
This one does do the full trick:
- It adds a function usbd_set_feature, which does do the trick to
put the right feature set in action.
- It adds a quirk called UQ_FEATURE2.
- It adds the implementation of the quirk in usbd_probe_and_attach
when the device isn't found at the end of the function.
Download patch-1.diff
1. http://www.freebsd.org/cgi/query-pr.cgi?prp=118686-1-diff&n=/patch-1.diff

2. http://people.freebsd.org/~erwin/e220-usb.diff

CVS log for src/sys/dev/usb/uhmodem.c

1. http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/dev/usb/uhmodem.c?rev=1.5.2.2&content-type=text/plain


posted on June 15, 2008 8:58 AM ()

Comment on this article   


198 articles found   [ Previous Article ]  [ Next Article ]  [ First ]  [ Last ]