# Internal USB Broadband modem



## talin (Dec 23, 2010)

Hello.

I would like to be able to go online using the internal USB broadband modem in my laptop. So far I have gathered the following:


```
$ dmesg | grep -i broadband
cdce0: <Dell Wireless 5530 HSPA Mobile Broadband Minicard NetworkAdapter> on usbus3

$ dmesg | grep -i ue0
ue0: <USB Ethernet> on cdce0
ue0: Ethernet address: 02 : 80 : 37 : ec : 02 : 00

$ usbconfig
ugen3.2: <Dell Wireless 5530 HSPA Mobile Broadband Minicard Device Dell> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
```
I have looked into ppp(8), and I have tried the following:


```
$ ppp
set device /dev/ugen3.2
term
AT
Warning: at: Invalid command
Warning: at: Failed 1
```
I have a PIN code for my SIM-card, but the AT-command set doesn't seem to work.

Is this card even supported?


----------



## SirDice (Dec 23, 2010)

ugen(4) is just a generic USB device driver. You'll need a specific driver for the hardware.

You might give u3g(4) a try, no idea if it works for this card but it's worth a shot.


----------



## talin (Dec 27, 2010)

Thank you for your reply!

I tried loading u3g in /boot/loader.conf, but upon booting it didn't appear in the output from dmesg. Perhaps my card simply isn't supported.


----------



## talin (Dec 28, 2010)

I can't get any further with this one, so I'm wondering if there is a list
of supported external USB adapters somewhere?


----------



## SirDice (Dec 28, 2010)

talin said:
			
		

> I'm wondering if there is a list of supported external USB adapters somewhere?



Yes, read the u3g(4) man page.


----------



## talin (Dec 28, 2010)

I found the following in /sys/dev/usb/serial/u3g.c, so it appears that 5530 isn't among the supported Dell cards:


```
static const struct usb_device_id u3g_devs[] = {
#define	U3G_DEV(v,p,i) { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) }
	U3G_DEV(DELL, U5500, 0),
	U3G_DEV(DELL, U5505, 0),
	U3G_DEV(DELL, U5510, 0),
	U3G_DEV(DELL, U5520, 0),
	U3G_DEV(DELL, U5520_2, 0),
	U3G_DEV(DELL, U5520_3, 0),
	U3G_DEV(DELL, U5700, 0),
	U3G_DEV(DELL, U5700_2, 0),
	U3G_DEV(DELL, U5700_3, 0),
	U3G_DEV(DELL, U5700_4, 0),
	U3G_DEV(DELL, U5720, 0),
	U3G_DEV(DELL, U5720_2, 0),
	U3G_DEV(DELL, U5730, 0),
	U3G_DEV(DELL, U5730_2, 0),
	U3G_DEV(DELL, U5730_3, 0),
	U3G_DEV(DELL, U740, 0)
        ...
#undef	U3G_DEV
};
```

I will look into one of the Huawei ones. Thank you for all the advice!


----------



## talin (Mar 3, 2011)

I finally managed to get this working. Here's how:

1) Add 
	
	



```
umodem_load = "YES"
```
 to /boot/loader.conf
This should create /dev/cuaU0 (USB to serial device).

2) Verify that you can talk to the modem using the *ppp*-command:

```
# ppp
ppp> set device /dev/cuaU0
ppp> set speed 38400
ppp> set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0
ppp> add default HISADDR
ppp> term
AT+CFUN=1                    /* Enable RF - this will only work if you disable WLAN by pressing e.g. FN+F9 (Dell) */
AT+CGDCONT=1,"IP","internet" /* This is an ISP-specific Access Point Name (APN) - Google is your friend */
ATD*99#                      /* Dial */
```

If your connection attempt is successful, your prompt should change from *ppp* to *PPP*. If it stops at e.g. *PPp*, here's a good reference: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ppp-troubleshoot.html

If your SIM-card requires a PIN-code, you can provide this using *AT+CPIN="1234"*.

Some service providers will require that you provide a username and password with [cmd=]set authname <username>[/cmd] and [cmd=]set authkey <password>[/cmd].

It might be useful to keep [cmd=]tail -f /var/log/ppp.log[/cmd] running when troubleshooting.

Good luck!


----------



## dekloper (May 9, 2012)

Greetings to all!

I have a problem similar as your, *talin*:


> I would like to be able to go online using the internal USB broadband modem in my laptop. So far I have gathered the following:



My serial device appear*s* after loading the module umodem. But the problem is not solved. Please help me make the right ppp.conf. I have used this /etc/ppp/ppp.conf:


```
default:
 set log Phase Chat LCP IPCP CCP tun command
 ident user-ppp VERSION (built COMPILATIONDATE)
 enable dns
 set speed 115200
 set timeout 180
beeline:
 set device /dev/ttyU0
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\" OK ATDT\\T TIMEOUT 60 CONNECT"
 set phone "*99***1#"
 set login
 set authname "beeline"
 set authkey "beeline"
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0
 add default HISADDR
```
After executing command *ppp -ddial beeline*.
At the same time ppp.log:

```
....
....
May  9 21:46:42 kaktus ppp[2231]: tun0: Phase: deflink: opening -> dial
May  9 21:46:42 kaktus ppp[2231]: tun0: Chat: Phone: *99***1#
May  9 21:46:42 kaktus ppp[2231]: tun0: Chat: Send: AT+CGDCONT=1,IP,internet.beeline.ru^M
May  9 21:46:42 kaktus ppp[2231]: tun0: Chat: Expect(5): OK
May  9 21:46:42 kaktus ppp[2231]: tun0: Chat: Received: AT+CGDCONT=1,IP,internet.beeline.ru^M^M
May  9 21:46:42 kaktus ppp[2231]: tun0: Chat: Received: ERROR^M
May  9 21:46:47 kaktus ppp[2231]: tun0: Chat: Expect timeout
May  9 21:46:47 kaktus ppp[2231]: tun0: Warning: Chat script failed
May  9 21:46:47 kaktus ppp[2231]: tun0: Phase: deflink: dial -> hangup
May  9 21:46:47 kaktus ppp[2231]: tun0: Phase: deflink: Disconnected!
...
...
```
If you are connecting from the console, how do you recommend.


> 2) Verify that you can talk to the modem using the ppp-command:



ppp.log as follows:


```
May 10 01:38:05 kaktus ppp[2193]: Phase: Using interface: tun0
May 10 01:38:05 kaktus ppp[2193]: Phase: deflink: Created in closed state
May 10 01:38:06 kaktus ppp[2193]: tun0: Command: default: ident user-ppp VERSION (built COMPILATIONDATE)
May 10 01:38:06 kaktus ppp[2193]: tun0: Command: default: enable dns
May 10 01:38:06 kaktus ppp[2193]: tun0: Command: default: set speed 115200
May 10 01:38:06 kaktus ppp[2193]: tun0: Command: default: set timeout 180
May 10 01:38:06 kaktus ppp[2193]: tun0: Phase: PPP Started (interactive mode).
May 10 01:38:35 kaktus ppp[2193]: tun0: Command: /dev/ttyv2: set device /dev/cuaU0
May 10 01:38:57 kaktus ppp[2193]: tun0: Command: /dev/ttyv2: set speed 38400
May 10 01:40:24 kaktus ppp[2193]: tun0: Command: /dev/ttyv2: set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0
May 10 01:41:07 kaktus ppp[2193]: tun0: Command: /dev/ttyv2: add default HISADDR
May 10 01:41:21 kaktus ppp[2193]: tun0: Command: /dev/ttyv2: term
May 10 01:41:21 kaktus ppp[2193]: tun0: Phase: bundle: Establish
May 10 01:41:21 kaktus ppp[2193]: tun0: Phase: deflink: closed -> opening
May 10 01:41:21 kaktus ppp[2193]: tun0: Phase: deflink: Connected!
May 10 01:41:21 kaktus ppp[2193]: tun0: Phase: deflink: opening -> carrier
May 10 01:41:22 kaktus ppp[2193]: tun0: Phase: deflink: /dev/cuaU0 doesn't support CD
May 10 01:41:22 kaktus ppp[2193]: tun0: Phase: deflink: carrier -> ready
May 10 01:44:02 kaktus ppp[2193]: tun0: Phase: deflink: PPP packet detected, coming up
May 10 01:44:02 kaktus ppp[2193]: tun0: Phase: deflink: ready -> carrier
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP: deflink: RecvConfigReq(1) state = Initial
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP:  AUTHPROTO[4] 0xc023 (PAP)
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP:  ACFCOMP[2]
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP:  PROTOCOMP[2]
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP:  ACCMAP[6] 0x00000000
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP:  MAGICNUM[6] 0x93434b6c
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP: deflink: Oops, RCR in Initial.
May 10 01:44:02 kaktus ppp[2193]: tun0: Phase: deflink: carrier -> lcp
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP: FSM: Using "deflink" as a transport
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP: deflink: State change Initial --> Closed
May 10 01:44:02 kaktus ppp[2193]: tun0: LCP: deflink: State change Closed --> Stopped
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: LayerStart
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: SendConfigReq(1) state = Stopped
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACFCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  PROTOCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACCMAP[6] 0x00000000
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  MRU[4] 1500
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  MAGICNUM[6] 0xd288a6c3
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: State change Stopped --> Req-Sent
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: RecvConfigReq(2) state = Req-Sent
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  AUTHPROTO[4] 0xc023 (PAP)
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACFCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  PROTOCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACCMAP[6] 0x00000000
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  MAGICNUM[6] 0x93434b6c
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: SendConfigAck(2) state = Req-Sent
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  AUTHPROTO[4] 0xc023 (PAP)
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACFCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  PROTOCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACCMAP[6] 0x00000000
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  MAGICNUM[6] 0x93434b6c
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: State change Req-Sent --> Ack-Sent
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: RecvConfigAck(1) state = Ack-Sent
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACFCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  PROTOCOMP[2]
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  ACCMAP[6] 0x00000000
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  MRU[4] 1500
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  MAGICNUM[6] 0xd288a6c3
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: State change Ack-Sent --> Opened
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: LayerUp
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: SendIdent(0) state = Opened
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  MAGICNUM d288a6c3
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP:  TEXT user-ppp 3.4.2 (built COMPILATIONDATE)
May 10 01:44:03 kaktus ppp[2193]: tun0: Phase: bundle: Authenticate
May 10 01:44:03 kaktus ppp[2193]: tun0: Phase: deflink: his = PAP, mine = none
May 10 01:44:03 kaktus ppp[2193]: tun0: Phase: Pap Output:  ********
May 10 01:44:03 kaktus ppp[2193]: tun0: Warning: Sending empty PAP authname!
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: RecvCodeRej(1) state = Opened
May 10 01:44:03 kaktus ppp[2193]: tun0: Phase: Pap Input: SUCCESS (Congratulations!)
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP: Using trigger address 0.0.0.0
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP: FSM: Using "deflink" as a transport
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP: deflink: State change Initial --> Closed
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP: deflink: LayerStart.
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP: MPPE: Not usable without CHAP81
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP: deflink: SendConfigReq(1) state = Closed
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP:  DEFLATE[4] win 15
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP:  PRED1[2] 
May 10 01:44:03 kaktus ppp[2193]: tun0: CCP: deflink: State change Closed --> Req-Sent
May 10 01:44:03 kaktus ppp[2193]: tun0: Phase: deflink: lcp -> open
May 10 01:44:03 kaktus ppp[2193]: tun0: Phase: bundle: Network
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP: FSM: Using "deflink" as a transport
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP: deflink: State change Initial --> Closed
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP: deflink: LayerStart.
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP: deflink: SendConfigReq(1) state = Closed
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP:  IPADDR[6] 0.0.0.0
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP:  COMPPROTO[6] 16 VJ slots with slot compression
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP:  PRIDNS[6] 255.255.255.255
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP:  SECDNS[6] 255.255.255.255
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP: deflink: State change Closed --> Req-Sent
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: RecvProtocolRej(1) state = Opened
May 10 01:44:03 kaktus ppp[2193]: tun0: LCP: deflink: -- Protocol 0x80fd (Compression Control Protocol) was rejected!
...
...
May 10 01:44:03 kaktus ppp[2193]: tun0: IPCP: deflink: State change Starting --> Initial
May 10 01:44:03 kaktus ppp[2193]: tun0: Phase: bundle: Terminate
May 10 01:44:06 kaktus ppp[2193]: tun0: LCP: deflink: LayerFinish
May 10 01:44:06 kaktus ppp[2193]: tun0: LCP: deflink: State change Stopping --> Stopped
May 10 01:44:06 kaktus ppp[2193]: tun0: LCP: deflink: State change Stopped --> Closed
May 10 01:44:06 kaktus ppp[2193]: tun0: LCP: deflink: State change Closed --> Initial
May 10 01:44:06 kaktus ppp[2193]: tun0: Phase: deflink: Disconnected!
May 10 01:44:07 kaktus ppp[2193]: tun0: Phase: deflink: Connect time: 166 secs: 354 octets in, 270 octets out
May 10 01:44:07 kaktus ppp[2193]: tun0: Phase: deflink: 11 packets in, 9 packets out
May 10 01:44:07 kaktus ppp[2193]: tun0: Phase:  total 3 bytes/sec, peak 124 bytes/sec on Thu May 10 01:44:04 2012
May 10 01:44:07 kaktus ppp[2193]: tun0: Phase: deflink: lcp -> closed
May 10 01:44:07 kaktus ppp[2193]: tun0: Phase: bundle: Dead
```

Please help, what is my mistake?


----------



## vermaden (Oct 12, 2012)

This content in /etc/ppp/ppp.conf gives me working Internet connection with *ppp -ddial 3g* command:


```
default:
 set log Phase Chat LCP IPCP CCP tun command

3g:
 set device /dev/cuaU0
 set speed 921600

 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
     \"\" AT OK-AT-OK \
       AT+CFUN=1 OK \
       AT+COPS=0 OK \
       AT+CGDCONT=1,\\\"IP\\\",\\\"www.plusgsm.pl\\\" OK \
       \dATDT\\T TIMEOUT 40 CONNECT"

 set logout "ABORT BUSY ABORT ERROR TIMEOUT 30 \"\" +++ATH O ATH OK"

 set phone *99\#
 set timeout 300
 set ifaddr 10.64.64.64/0 10.64.64.64/0 255.255.255.255 0.0.0.0
 add default HISADDR
 enable dns
 disable ipv6cp
```


----------



## robbak (Oct 12, 2012)

```
AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\"
```

Your modem does not like something about this. You can try just removing it, together with its ok messages. It would help if you learn about chat script syntax. Try this for a dial line:
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATDT\\T TIMEOUT 60 CONNECT"

I think that is all I needed when connecting a device last time I tried.


----------



## vermaden (Oct 12, 2012)

robbak said:
			
		

> ```
> AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\"
> ```


Its probably the 'wrong' format, check mine:

```
AT+CGDCONT=1,\\\"IP\\\",\\\"www.plusgsm.pl\\\" OK
```

Try this:

```
AT+CGDCONT=1,\\\"IP\\\",\\\"internet.beeline.ru\\\" OK
```


----------



## dekloper (Jul 26, 2013)

Thank you all, problem was solved.


----------

