[Gta04-owner] Modem crashing?

Dr. H. Nikolaus Schaller hns at goldelico.com
Sat Feb 18 16:24:27 CET 2012


Am 18.02.2012 um 12:20 schrieb Dr. H. Nikolaus Schaller:

> 
> Am 18.02.2012 um 12:15 schrieb Dr. H. Nikolaus Schaller:
> 
>> 
>> Am 18.02.2012 um 11:44 schrieb Dr. H. Nikolaus Schaller:
>> 
>>> 
>>> Am 18.02.2012 um 07:08 schrieb NeilBrown:
>>>> 
>>>> 
>>>> If I call my GTA04, answer the call, and then hang up, I do not get 
>>>> NO CARRIER
>>>> on the 'Application' port (which is where I get e.g. "RING" indications).
>>>> However I *do* get "NO CARRIER" on the Modem port.
>>>> A little surprising but possibly quite usable.  There may be other surprises
>>>> for those willing to explore.
>>>> 
>>>> When I dial out it seems a little different.  I try to hang up with ATH
>>>> but "AT+CPAS" indicates I am still on a call.  When the other end hangs up,
>>>> then I get NO CARRIER.
>>>> I'm not sure if this is always consistent.  More experimentation is needed.
>>> 
>>> I have recompiled the hso driver with debug enabled and could no longer see
>>> the USB re-enumeration issue (which does not prove that one has to do anything
>>> with the other, i.e. this is a step towards a solution).
>> 
>> Here is some strange log entry:
>> 
>> [ 7974.712158] [1219:hso_std_serial_read_bulk_callback]: Actual length = 8
>> [ 7974.712188] 
>> [ 7974.720672] hso[1220:hso_std_serial_read_bulk_callback]0d 0a 52 49 4e 47 0d 0a                          ..RING..
>> [ 7974.720703] [2069:put_rxbuf_data]: data to push to tty
>> [ 7974.726135] usb 2-2: hso received invalid serial state notification
>> [ 7974.732696] hso[1536:tiocmget_intr_callback]a1 20 00 00 06 00 02 00 0b 00                    . ........
>> [ 7980.619812] usb 2-2: hso received invalid serial state notification
>> [ 7980.626403] hso[1536:tiocmget_intr_callback]a1 20 00 00 06 00 02 00 03 00                    . ........
>> [ 7980.721954] [1219:hso_std_serial_read_bulk_callback]: Actual length = 8
>> [ 7980.721984] 
>> [ 7980.730468] hso[1220:hso_std_serial_read_bulk_callback]0d 0a 52 49 4e 47 0d 0a                          ..RING..
>> [ 7980.730499] [2069:put_rxbuf_data]: data to push to tty
>> [ 7980.735900] usb 2-2: hso received invalid serial state notification
>> [ 7980.742462] hso[1536:tiocmget_intr_callback]a1 20 00 00 06 00 02 00 0b 00                    . ........
>> [ 7981.419860] usb 2-2: hso received invalid serial state notification
>> [ 7981.426452] hso[1536:tiocmget_intr_callback]a1 20 00 00 06 00 02 00 03 00                    . ........
>> [ 7987.059143] [1976:hso_std_serial_write_bulk_callback]:  
>> [ 7987.064910] [1976:hso_std_serial_write_bulk_callback]:  
>> [ 7988.661804] [1355:hso_serial_close]: Closing serial port
>> [ 7988.667510] [696:log_usb_status]: hso_std_serial_read_bulk_callback: received USB status - endpoint not enabled (-2)
>> [ 8054.969085] [1355:hso_serial_close]: Closing serial port
>> [ 8054.974822] [696:log_usb_status]: hso_std_serial_read_bulk_callback: received USB status - endpoint not enabled (-2)
>> [ 8054.986053] [696:log_usb_status]: hso_std_serial_read_bulk_callback: received USB status - endpoint not enabled (-2)
>> [ 8054.997283] [696:log_usb_status]: tiocmget_intr_callback: received USB status - endpoint not enabled (-2)
>> 
>> But this time the USB interface did not re-enumerate.
>> 
> 
> After closing and reopening /dev/ttyHS_Application
> 
> [ 8446.190643] [696:log_usb_status]: hso_std_serial_read_bulk_callback: received USB status - endpoint not enabled (-2)
> [ 8446.214050] [696:log_usb_status]: hso_std_serial_write_bulk_callback: received USB status - endpoint not enabled (-2)
> [ 8447.820648] [1307:hso_serial_open]: Opening 3
> [ 8452.963134] [1355:hso_serial_close]: Closing serial port
> [ 8452.980133] [696:log_usb_status]: hso_std_serial_read_bulk_callback: received USB status - endpoint not enabled (-2)
> [ 8453.003570] [696:log_usb_status]: hso_std_serial_write_bulk_callback: received USB status - endpoint not enabled (-2)
> [ 8457.893798] [1307:hso_serial_open]: Opening 5
> [ 8457.902038] ehci-omap ehci-omap.0: force halt; handshake fa064814 00004000 00000000 -> -110
> [ 8457.910858] usb 2-2: tiocmget_submit_urb usb_submit_urb failed -110
> [ 8459.955413] usb 2-2: Failed to submit urb - res -108
> [ 8459.961120] usb 2-2: Failed to submit urb - res -108
> [ 8459.966491] usb 2-2: Failed to submit urb - res -108
> [ 8459.971740] usb 2-2: Failed to submit urb - res -108
> [ 8459.976989] usb 2-2: Failed to submit urb - res -108
> [ 8460.732055] usb 2-2: Failed to submit urb - res -108
> [ 8460.741790] usb 2-2: Failed to submit urb - res -108
> [ 8460.947357] usb 2-2: Failed to submit urb - res -108
> [ 8460.953002] usb 2-2: Failed to submit urb - res -108
> [ 8461.579833] [1355:hso_serial_close]: Closing serial port
> [ 8461.585510] [696:log_usb_status]: hso_std_serial_read_bulk_callback: received USB status - endpoint not enabled (-2)
> [ 8461.596527] [696:log_usb_status]: hso_std_serial_read_bulk_callback: received USB status - device disabled (-108)
> [ 8474.674285] [1307:hso_serial_open]: Opening 3
> [ 8474.679016] usb 2-2: Failed to submit urb - res -108
> [ 8474.684265] [1355:hso_serial_close]: Closing serial port
> [ 8479.596313] [1307:hso_serial_open]: Opening 4
> [ 8479.601043] usb 2-2: Failed to submit urb - res -108
> [ 8479.606292] [1355:hso_serial_close]: Closing serial port
> [ 8481.221374] [1307:hso_serial_open]: Opening 5
> [ 8481.226104] usb 2-2: Failed to submit urb - res -108
> [ 8481.231323] usb 2-2: tiocmget_submit_urb usb_submit_urb failed -108
> [ 8481.237945] [1355:hso_serial_close]: Closing serial port
> 
> So something is garbling the USB protocol stack and/or the interface.
> 
> Nikolaus

More test results.

1. ATA either says
	"OK" (if call accepted)
	"ERROR" (if already established)
	"NO CARRIER" (if no call is pending)
	all on the Application port (only)

sounds to be ok.

2. I tried to find a pattern in "usb 2-2: hso received invalid serial state notification"
	comes once for each "RING" message
	also comes if ringing is terminated by the caller (!)
	may come once for successful ATA
	does not come for a terminated call
	does not appear during normal commands
	does not appear on _OSIGQ: unsolicited message
	does not appear during a ATD initiated call

It appears to have something to do with the W_INDEX/wIndex
of the struct hso_serial_state_notification
which is dumped to be 0x06 but the code expects 0x02
in tiocmget_intr_callback(). The UART_state_bitmap
appears to reflect the RINGing state correctly (the 0x03
and 0x0b in the bold face lines I had posted before).

Well, it looks as if the modem tries to forward the RING
not only as a text message but also as a RI to the
virtual RS232 and this fails due to a bug/mismatch of the
Linux driver and the modem's firmware.

If you can't follow what I am talking about:

	http://lxr.free-electrons.com/source/drivers/net/usb/hso.c

line 210 and 1525.

But that has nothing to do with the usb failing/re-enumeration.

Nikolaus


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.goldelico.com/pipermail/gta04-owner/attachments/20120218/94cd4d12/attachment-0001.html>


More information about the Gta04-owner mailing list