Difference between revisions of "Gobi Broadband Modems"

From ArchWiki
Jump to: navigation, search
(http -> https://aur.archlinux.org)
m (Style)
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{i18n|Gobi Broadband Modems}}
+
[[Category:Modems]]
[[Category:Modems (English)]]
+
 
+
 
This is a short tutorial on connecting to the internet using your gobi modem.
 
This is a short tutorial on connecting to the internet using your gobi modem.
  
==Device identification==
+
== Device identification ==
Install usbutils
+
 
pacman -S usbutils
+
Install {{Pkg|usbutils}} and then examine the output of
and then examine the output of
+
 
  $ lsusb
 
  $ lsusb
 
which will show the vendor and product IDs of the device.
 
which will show the vendor and product IDs of the device.
Line 16: Line 13:
 
As of linux-3.1.1-1 the device is detected by the qcserial module, if not, you're going to have to recompile the qcserial module with your added product and vendor id.
 
As of linux-3.1.1-1 the device is detected by the qcserial module, if not, you're going to have to recompile the qcserial module with your added product and vendor id.
  
==gobi_loader==
+
Alternatively you can add the Product and Vendor ID by writing them into the new_id file (best both at the same time because most Gobi modules switch the Product ID when the Firmware is loaded).
 +
Here the Shell Commands i had to use (in a root shell, sudo doesn't work in this case for some reason):
 +
my integrated Gobi2K has the Vendor ID 04da and the Product IDs 250e (waiting for Firmware) and 250f (firmware loaded)
 +
echo "04da 250e" > /sys/bus/usb-serial/drivers/qcserial/new_id
 +
echo "04da 250f" > /sys/bus/usb-serial/drivers/qcserial/new_id
 +
note that this has to be repeated when you reload the qcserial module or reboot/shutdown.
 +
 
 +
== gobi_loader ==
  
 
"gobi_loader is a firmware loader for Qualcomm Gobi USB chipsets. These devices appear in an uninitialised state when power is applied and require firmware to be loaded before they can be used as modems. gobi_loader adds a udev rule that will trigger loading of the firmware and make the modem usable." (http://www.codon.org.uk/~mjg59/gobi_loader/)
 
"gobi_loader is a firmware loader for Qualcomm Gobi USB chipsets. These devices appear in an uninitialised state when power is applied and require firmware to be loaded before they can be used as modems. gobi_loader adds a udev rule that will trigger loading of the firmware and make the modem usable." (http://www.codon.org.uk/~mjg59/gobi_loader/)
  
I installed gobi-loader from the AUR (https://aur.archlinux.org/packages.php?ID=30943)
+
Install [https://aur.archlinux.org/packages.php?ID=30943 gobi-loader] and [https://aur.archlinux.org/packages.php?ID=30944 gobi-firmware] from [[AUR]].
  
After installation, you should enter your product and vendor id in the /lib/udev/rules.d/60-gobi.rules
+
After installation, you should enter your product and vendor id in the {{ic|/lib/udev/rules.d/60-gobi.rules}}
 
+
The tricky part is obtaining the gobi firmware files. I used a Virtualbox Windows XP installation. The official HP un2430 driver wouldn't install since the BIOSVendor was set to something other than "Hewlett-Packard".
+
 
+
To change these fields follow the manual at the following link: http://www.virtualbox.org/manual/ch09.html#changedmi
+
 
+
After a succesfull install, you need to copy your amss.mbn and uqcn.mbn files to /lib/firmware/gobi
+
 
+
The full path to the firmware files looks like this:
+
C:\Program Files\QUALCOMM\Gobi\Images\Generic\
+
 
+
You'll reach a directory which has numbered subdirectories, as far as I can tell the 6 is the default firmware files, the other ones correspond to different carriers. If in doubt, use the files in the 6 directory.
+
  
 
Then a simple reload of the qcserial module:
 
Then a simple reload of the qcserial module:
Line 39: Line 32:
 
  # modprobe qcserial
 
  # modprobe qcserial
  
==Connection==
+
== Connection ==
  
 
=== wvdial ===
 
=== wvdial ===
:''See main article: [[wvdial]]''
+
 
 +
''See main article: [[wvdial]]''
  
 
The general procedure is to switch the device into modem mode, make sure the ttyUSB device(s) are recognized by the qcserial kernel module, and then to run wvdial to dial, connect and start pppd.
 
The general procedure is to switch the device into modem mode, make sure the ttyUSB device(s) are recognized by the qcserial kernel module, and then to run wvdial to dial, connect and start pppd.
  
Install wvdial
+
Install {{Pkg|wvdial}}. The configuration file {{ic|/etc/wvdial.conf}} will in general depend on (a) which device you have (b) which mobile network you are connecting to. A single wvdial.conf file can be defined with named sections to be usable with several USB modems and networks, should you need them.
# pacman -S wvdial
+
The configuration file /etc/wvdial.conf will in general depend on (a) which device you have (b) which mobile network you are connecting to. A single wvdial.conf file can be defined with named sections to be usable with several USB modems and networks, should you need them.
+
  
Run (as root)
+
Run:
 
  # wvdialconf
 
  # wvdialconf
which will attempt to write /etc/wvdial.conf correctly. You will need to add the user, password and Access Point Name (APN). You can obtain these (i) from your network provider,
+
which will attempt to write {{ic|/etc/wvdial.conf}} correctly. You will need to add the user, password and Access Point Name (APN). You can obtain these (i) from your network provider,
 
(ii) from other users via published wvdial.confs, or (iii) by logging the USB tty traffic under another operating system (Sysinternals' Portmon).
 
(ii) from other users via published wvdial.confs, or (iii) by logging the USB tty traffic under another operating system (Sysinternals' Portmon).
  
My /etc/wvdial.conf looks like this:
+
My {{ic|/etc/wvdial.conf}} looks like this:
  
<pre>
+
[Dialer status]
[Dialer status]
+
Init1 = AT+CPIN?
Init1 = AT+CPIN?
+
Init2 = ATI
Init2 = ATI
+
Modem = /dev/ttyUSB1
Modem = /dev/ttyUSB1
+
 
+
[Dialer pin]
[Dialer pin]
+
Modem = /dev/ttyUSB1
Modem = /dev/ttyUSB1
+
Init1 = AT+CPIN=1234
Init1 = AT+CPIN=1234
+
 
+
[Dialer wwan]
[Dialer wwan]
+
Init1 = ATZ
Init1 = ATZ
+
Init2 = AT+CGDCONT=1,"IP","data.apn.com"
Init2 = AT+CGDCONT=1,"IP","data.apn.com"
+
Stupid Mode = yes
Stupid Mode = yes
+
Phone = *99***1#
Phone = *99***1#
+
New PPPD = yes
New PPPD = yes
+
Modem = /dev/ttyUSB1
Modem = /dev/ttyUSB1
+
Username = XXXXXX
Username = XXXXXX
+
Dial Command = ATDT
Dial Command = ATDT
+
Password = XXXXXX
Password = XXXXXX
+
Baud = 460800
Baud = 460800
+
</pre>
+
  
 
To simplify the procedure, I took my SIM card out and disabled the PIN so I don't have to run "wvdial pin" before connecting to the internet.
 
To simplify the procedure, I took my SIM card out and disabled the PIN so I don't have to run "wvdial pin" before connecting to the internet.
  
Often there will be several devices (at /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2 for example). If in doubt about which to use, try each of them in turn. Once the configuration files are prepared, the internet connection is established by running
+
Often there will be several devices (at {{ic|/dev/ttyUSB0}}, {{ic|/dev/ttyUSB1}}, {{ic|/dev/ttyUSB2}} for example). If in doubt about which to use, try each of them in turn. Once the configuration files are prepared, the internet connection is established by running
  
 
  $ wvdial <section>
 
  $ wvdial <section>
Line 88: Line 78:
 
The final wvdial command should start pppd and the obained IP address should be visible in the terminal output. At that point the internet connection should be live, which can be easily checked with a web browser or by pinging an external IP address.
 
The final wvdial command should start pppd and the obained IP address should be visible in the terminal output. At that point the internet connection should be live, which can be easily checked with a web browser or by pinging an external IP address.
  
==Related Articles==
+
== See also ==
[[USB 3G Modem]]<br>
+
 
[[Huawei E220]]<br>
+
* [[USB 3G Modem]]
[[Allow users to dial with wvdial]]<br>
+
* [[Huawei E220]]
[[Idea_netsetter(Huawei_EG162G)]]<br>
+
* [[Allow users to dial with wvdial]]
[[ZTE MF636]]<br>
+
* [[Idea_netsetter(Huawei_EG162G)]]
[[Internet key Momo Design]]<br>
+
* [[ZTE MF636]]
[[Dialup_without_a_dialer_HOWTO]]<br>
+
* [[Dialup_without_a_dialer_HOWTO]]
[[3G and GPRS modems with pppd alone]]<br>
+
* [[3G and GPRS modems with pppd alone]]
[[Huawei E1550 3G modem]]
+
* [[Huawei E1550 3G modem]]

Revision as of 13:42, 30 May 2013

This is a short tutorial on connecting to the internet using your gobi modem.

Device identification

Install usbutils and then examine the output of

$ lsusb

which will show the vendor and product IDs of the device.

For example, my HP un2430 modem:

Bus 001 Device 005: ID 03f0:371d Hewlett-Packard 

As of linux-3.1.1-1 the device is detected by the qcserial module, if not, you're going to have to recompile the qcserial module with your added product and vendor id.

Alternatively you can add the Product and Vendor ID by writing them into the new_id file (best both at the same time because most Gobi modules switch the Product ID when the Firmware is loaded). Here the Shell Commands i had to use (in a root shell, sudo doesn't work in this case for some reason): my integrated Gobi2K has the Vendor ID 04da and the Product IDs 250e (waiting for Firmware) and 250f (firmware loaded)

echo "04da 250e" > /sys/bus/usb-serial/drivers/qcserial/new_id
echo "04da 250f" > /sys/bus/usb-serial/drivers/qcserial/new_id

note that this has to be repeated when you reload the qcserial module or reboot/shutdown.

gobi_loader

"gobi_loader is a firmware loader for Qualcomm Gobi USB chipsets. These devices appear in an uninitialised state when power is applied and require firmware to be loaded before they can be used as modems. gobi_loader adds a udev rule that will trigger loading of the firmware and make the modem usable." (http://www.codon.org.uk/~mjg59/gobi_loader/)

Install gobi-loader and gobi-firmware from AUR.

After installation, you should enter your product and vendor id in the /lib/udev/rules.d/60-gobi.rules

Then a simple reload of the qcserial module:

# rmmod qcserial
# modprobe qcserial

Connection

wvdial

See main article: wvdial

The general procedure is to switch the device into modem mode, make sure the ttyUSB device(s) are recognized by the qcserial kernel module, and then to run wvdial to dial, connect and start pppd.

Install wvdial. The configuration file /etc/wvdial.conf will in general depend on (a) which device you have (b) which mobile network you are connecting to. A single wvdial.conf file can be defined with named sections to be usable with several USB modems and networks, should you need them.

Run:

# wvdialconf

which will attempt to write /etc/wvdial.conf correctly. You will need to add the user, password and Access Point Name (APN). You can obtain these (i) from your network provider, (ii) from other users via published wvdial.confs, or (iii) by logging the USB tty traffic under another operating system (Sysinternals' Portmon).

My /etc/wvdial.conf looks like this:

[Dialer status]
Init1 = AT+CPIN?
Init2 = ATI
Modem = /dev/ttyUSB1

[Dialer pin]
Modem = /dev/ttyUSB1
Init1 = AT+CPIN=1234

[Dialer wwan]
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","data.apn.com"
Stupid Mode = yes
Phone = *99***1#
New PPPD = yes
Modem = /dev/ttyUSB1
Username = XXXXXX
Dial Command = ATDT
Password = XXXXXX
Baud = 460800

To simplify the procedure, I took my SIM card out and disabled the PIN so I don't have to run "wvdial pin" before connecting to the internet.

Often there will be several devices (at /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2 for example). If in doubt about which to use, try each of them in turn. Once the configuration files are prepared, the internet connection is established by running

$ wvdial <section>

The final wvdial command should start pppd and the obained IP address should be visible in the terminal output. At that point the internet connection should be live, which can be easily checked with a web browser or by pinging an external IP address.

See also