Skip to contentSkip to conversation

commit "Fix Use hashtable to record udev path" breaks huawei

DISCUSSION Kalle Valo 3 participants 5 messages May 19, 2010 – May 20, 2010

lore
Share & tools
lore

Kalle Valo

author
#0 lore raw

Hi,

while working on third version of my huawei gprs patches I noticed that this commit breaks huawei:

commit af976f7e524746b1b55645967e11ab8250f593a8

Author: Zhenhua Zhang <[email protected]>
Date:   Tue May 11 09:04:28 2010 +0800

Fix Use hashtable to record udev path

Sometimes, Udev device 'remove' event could not report correct parent node of current udev_device. Current code replies on the devpath attached on the parent node to find modem and then remove it.

This fix is to change the way to store the devpath info into a hashtable. So that we search hashtable to get devpath and remove the modem.

I reverted the commit and huawei works again for me. More details later today.

Signature · 1 line
Kalle Valo
author
#1 lore raw
Quoted 13 lines · Kalle Valo

while working on third version of my huawei gprs patches I noticed that this commit breaks huawei:

commit af976f7e524746b1b55645967e11ab8250f593a8

Author: Zhenhua Zhang <[email protected]>
Date:   Tue May 11 09:04:28 2010 +0800

Fix Use hashtable to record udev path

Sometimes, Udev device 'remove' event could not report correct parent node of current udev_device. Current code replies on the devpath attached on the parent node to find modem and then remove it.

Quoted 6 lines

This fix is to change the way to store the devpath info into a hashtable. So that we search hashtable to get devpath and remove the modem.

I reverted the commit and huawei works again for me. More details later today.

Sorry, I was too hasty. The patch is fine, I was just testing inproperly. After a bit more testing I found out that problem always happens when I plugin the usb modem:

May 19 17:20:09 tukki connmand[30925]: plugins/ofono.c:modem_changed() path /huawei1
May 19 17:20:10 tukki ofonod[672]: < ATE0\r\r\nOK\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CFUN=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\nOK\r\n
May 19 17:20:10 tukki ofonod[672]: plugins/huawei.c:cfun_enable() 
May 19 17:20:10 tukki ofonod[672]: > AT+CRC=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CLIP=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+COLP=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CCWA=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: drivers/atmodem/voicecall.c:at_voicecall_initialized() voicecall_init: registering to notifications
May 19 17:20:10 tukki ofonod[672]: src/sim.c:ofono_sim_add_state_watch() 0x132bcd0
May 19 17:20:10 tukki ofonod[672]: * < \r\n^STIN:0,0,0\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CGMI\r
May 19 17:20:10 tukki connmand[30925]: plugins/ofono.c:modem_changed() path /huawei1
May 19 17:20:10 tukki ofonod[672]: < \r\nhuawei\r\n\r\nOK\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CRSM=176,28590,0,0,1\r
May 19 17:20:10 tukki connmand[30925]: plugins/ofono.c:modem_changed() path /huawei1
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CLCC\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CRSM=192,28599\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: src/voicecall.c:ecc_g2_read_cb() 0
May 19 17:20:10 tukki ofonod[672]: > AT+CGMM\r
May 19 17:20:10 tukki ofonod[672]: < \r\nE1552\r\n\r\nOK\r\n

But if I start ofono while the usb modem is plugged in it works fine. Also modem disable and then enable workarounds it. Oh well.

Signature · 1 line
Kalle Valo
#2 lore raw

Hi Kalle,

Quoted 36 lines

Sorry, I was too hasty. The patch is fine, I was just testing inproperly. After a bit more testing I found out that problem always happens when I plugin the usb modem:

May 19 17:20:09 tukki connmand[30925]: plugins/ofono.c:modem_changed() path
 /huawei1 May 19 17:20:10 tukki ofonod[672]: < ATE0\r\r\nOK\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CFUN=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\nOK\r\n
May 19 17:20:10 tukki ofonod[672]: plugins/huawei.c:cfun_enable()
May 19 17:20:10 tukki ofonod[672]: > AT+CRC=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CLIP=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+COLP=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CCWA=1\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]:
 drivers/atmodem/voicecall.c:at_voicecall_initialized() voicecall_init:
 registering to notifications May 19 17:20:10 tukki ofonod[672]:
 src/sim.c:ofono_sim_add_state_watch() 0x132bcd0 May 19 17:20:10 tukki
 ofonod[672]: * < \r\n^STIN:0,0,0\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CGMI\r
May 19 17:20:10 tukki connmand[30925]: plugins/ofono.c:modem_changed() path
 /huawei1 May 19 17:20:10 tukki ofonod[672]: < \r\nhuawei\r\n\r\nOK\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CRSM=176,28590,0,0,1\r
May 19 17:20:10 tukki connmand[30925]: plugins/ofono.c:modem_changed() path
 /huawei1 May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CLCC\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: > AT+CRSM=192,28599\r
May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n
May 19 17:20:10 tukki ofonod[672]: src/voicecall.c:ecc_g2_read_cb() 0
May 19 17:20:10 tukki ofonod[672]: > AT+CGMM\r
May 19 17:20:10 tukki ofonod[672]: < \r\nE1552\r\n\r\nOK\r\n
Quoted 3 lines

But if I start ofono while the usb modem is plugged in it works fine. Also modem disable and then enable workarounds it. Oh well.

Sounds like the SIM needs some time to be initialized. Perhaps a Huawei specific command might be required to figure out when the SIM is actually ready. Try listening to ^SIMST or simply re-trying a particular command until you don't get SIM busy error.

Regards,
-Denis

#3 lore raw
In reply to Kalle Valo

Hi Kalle,

Quoted 62 lines · Kalle Valo
Quoted 14 lines · Kalle Valo

while working on third version of my huawei gprs patches I noticed that this commit breaks huawei:

commit af976f7e524746b1b55645967e11ab8250f593a8

Author: Zhenhua Zhang <[email protected]>
Date:   Tue May 11 09:04:28 2010 +0800

Fix Use hashtable to record udev path

Sometimes, Udev device 'remove' event could not report correct parent node of current udev_device. Current code replies on the devpath attached on the parent node to find modem and then
remove it.

Quoted 6 lines

This fix is to change the way to store the devpath info into a hashtable. So that we search hashtable to get devpath and remove
the modem.

I reverted the commit and huawei works again for me. More details later today.

Sorry, I was too hasty. The patch is fine, I was just testing inproperly. After a bit more testing I found out that problem always happens when I plugin the usb modem:

May 19 17:20:09 tukki connmand[30925]:

plugins/ofono.c:modem_changed() path /huawei1 May 19 17:20:10 tukki ofonod[672]: < ATE0\r\r\nOK\r\n May 19 17:20:10 tukki ofonod[672]: > AT+CFUN=1\r May 19 17:20:10 tukki ofonod[672]:
< \r\nOK\r\n May 19 17:20:10 tukki ofonod[672]:
plugins/huawei.c:cfun_enable() May 19 17:20:10 tukki ofonod[672]: > AT+CRC=1\r May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n May 19 17:20:10 tukki ofonod[672]: > AT+CLIP=1\r May 19 17:20:10 tukki ofonod[672]:
< \r\n+CME ERROR: SIM busy\r\n May 19 17:20:10 tukki ofonod[672]: > AT+COLP=1\r May 19 17:20:10 tukki ofonod[672]:
< \r\n+CME ERROR: SIM busy\r\n May 19 17:20:10 tukki ofonod[672]: > AT+CCWA=1\r May 19 17:20:10 tukki ofonod[672]:
< \r\n+CME ERROR: SIM busy\r\n May 19 17:20:10 tukki ofonod[672]:
drivers/atmodem/voicecall.c:at_voicecall_initialized()
voicecall_init: registering to notifications May 19 17:20:10 tukki ofonod[672]: src/sim.c:ofono_sim_add_state_watch() 0x132bcd0 May 19 17:20:10 tukki ofonod[672]: * < \r\n^STIN:0,0,0\r\n May 19 17:20:10 tukki ofonod[672]: > AT+CGMI\r May 19 17:20:10 tukki connmand[30925]:
plugins/ofono.c:modem_changed() path /huawei1 May 19 17:20:10 tukki ofonod[672]: < \r\nhuawei\r\n\r\nOK\r\n May 19 17:20:10 tukki ofonod[672]: > AT+CRSM=176,28590,0,0,1\r May 19 17:20:10 tukki connmand[30925]: plugins/ofono.c:modem_changed() path /huawei1 May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR:
SIM busy\r\n May 19 17:20:10 tukki ofonod[672]: > AT+CLCC\r

May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM

busy\r\n May 19 17:20:10 tukki ofonod[672]: > AT+CRSM=192,28599\r May 19 17:20:10 tukki ofonod[672]: < \r\n+CME ERROR: SIM busy\r\n May 19 17:20:10 tukki ofonod[672]: src/voicecall.c:ecc_g2_read_cb() 0 May 19 17:20:10 tukki ofonod[672]: > AT+CGMM\r May 19 17:20:10 tukki ofonod[672]: < \r\nE1552\r\n\r\nOK\r\n

Quoted 2 lines

But if I start ofono while the usb modem is plugged in it works fine. Also modem disable and then enable workarounds it. Oh well.

My commit af976f7e524 should not impact modem detection and power up stage. If you found huawei modem still exists in oFono after you unplug the dungle, I guess something maybe wrong in my patch. :-)

Maybe you need to wait until SIM is settled to power on it. As Denis said, listen '^SIMST' notification should be a good idea.

Quoted 6 lines

--
Kalle Valo
_______________________________________________
ofono mailing list
ofono(a)ofono.org
http://lists.ofono.org/listinfo/ofono

Regards,
Zhenhua

author
#4 lore raw
Quoted 1 line · Zhenhua

Hi Kalle,

Hi Zhenhua,

Quoted 9 lines
Quoted 8 lines · Kalle Valo
Quoted 6 lines · Kalle Valo

while working on third version of my huawei gprs patches I noticed that this commit breaks huawei:

commit af976f7e524746b1b55645967e11ab8250f593a8

Author: Zhenhua Zhang <[email protected]>
Date:   Tue May 11 09:04:28 2010 +0800

[...]

Quoted 4 lines
Quoted 4 lines

Sorry, I was too hasty. The patch is fine, I was just testing inproperly. After a bit more testing I found out that problem always happens when I plugin the usb modem:

[...]

Quoted 3 lines

My commit af976f7e524 should not impact modem detection and power up stage. If you found huawei modem still exists in oFono after you unplug the dungle, I guess something maybe wrong in my patch. :-)

Your patch is fine, I was just testing inproperly. I didn't use the exactly the same test steps when I did the revert/unrevert cycle of your patch, and that's why I falsely assumed that your patch broke it. Sorry about that.

Signature · 1 line
Kalle Valo