**** BEGIN LOGGING AT Mon Aug 16 02:59:56 2010 Aug 16 03:10:59 denkenz: wtf does oFono have to do with GPS? :/ Aug 16 03:20:06 luke-jr: Please read the TODO entry related to GPS, it will answer your question Aug 16 03:20:23 I did.. Aug 16 03:20:44 Then what exactly are you asking? Aug 16 03:21:01 what does oFono have to do with GPS? Aug 16 03:21:24 oFono owns the modem ttys Aug 16 03:21:45 If the modem has a GPS unit, then enabling / disabling and otherwise controlling the GPS tty is up to oFono Aug 16 03:22:07 If the GPS unit is a discrete unit, then oFono has nothing to do with it Aug 16 03:42:40 modem ttys? Aug 16 03:42:50 :p Aug 16 03:42:56 phonet0 isn't a tty ☺ Aug 16 03:49:47 luke-jr: Please stop trolling, there are other drivers than phonet/isi Aug 16 09:45:57 Call.LineIdentification == callerId (on incoming calls)? But it's always empty (isimodem/n900modem). is it ok? any workaround? Aug 16 12:39:36 e-yes: a tcpdump -s 1500 -i phonet0 would help... Aug 16 12:52:30 pessi, http://slil.ru/29568299 http://pastebin.com/AGPrx9zA -- i see callee number in logs, but it's always empty in voicecall.LineIdentification property Aug 16 13:26:57 hello Aug 16 13:27:28 some1 alive here ? have question about probing 3g modems ... Aug 16 13:29:47 depending on driver Im using (ie. option.ko hso.ko ) I have different devices (/dev/ttyHSO0,1,2 or /dev/ttyUSB0,1,2,3 etc.... ). How to determine which device should I use for communication etc ? Aug 16 13:33:41 e-yes: the address presentation bits say "presentation restricted" Aug 16 13:45:48 denkenz: So I pushed initial work for the ZTE modems. Aug 16 13:46:27 pessi, what's "presentation restricted"? smth like "hide my number"? Aug 16 13:46:44 denkenz: USSD, CBS, Phonebook etc. do work. SMS works, but might have the same issues with incoming and delivery reports. Netreg is missing signal strength. Aug 16 13:46:57 i call from the same number and settings to maemo and it shows me number Aug 16 13:47:13 denkenz: Missing pieces are GPRS and the special RAT modem driver. Aug 16 13:48:25 e-yes: I suspect there is something fishy in Aki's decoding functions in arm.. Aug 16 14:30:24 denkenz: Around? Aug 16 14:48:07 holtmann: Am now Aug 16 14:48:19 I am playing with USSD a bit. Aug 16 14:48:39 The network operators that don't do STK are mostly emulating the menu choices via USSD. Aug 16 14:48:50 Maybe we should think about an USSD agent. Aug 16 14:49:36 I thought about it, however the USSD interaction is less structured Aug 16 14:50:04 I know, but in general it can have string or key input. Aug 16 14:50:21 The menu of course is just free from text. Aug 16 14:51:00 At minium we need to track the caller of a transaction and cancel if it goes of the bus. Aug 16 14:51:22 Can we have multiple USSD sessions at the same time? Aug 16 14:51:33 Trouble is, not all modems support cancel Aug 16 14:51:43 And 1 ussd session active only Aug 16 14:52:06 The modem might not support it, but we need to reset our state if the caller dies. Aug 16 14:52:42 If the caller dies we're still going to wait for the ussd response Aug 16 14:53:36 Yes. And we should not do that. If the caller dies, then we should just try to cancel. Aug 16 14:54:00 Anyhow, I am currently think that an agent concept (even really a lot simpler than STK agent) would be good here. Aug 16 14:54:32 More modems don't support cancel than do right now Aug 16 14:54:59 so its feasible, but making an agent with 2 functions is overkill Aug 16 14:55:46 We have 3 at least. Notification, Request, Response. Aug 16 14:56:22 Anyhow, I am just toying with ideas here. Aug 16 14:57:12 If the networks have an active req-rsp model in their network, then the agent makes a lot of sense to model it the same for the users. Aug 16 14:57:50 Currently the client/application needs to track a lot details with the State change etc. Aug 16 14:58:07 And manually calling Cancel to reset it. Aug 16 14:59:30 denkenz: And strings with umlauts are broken ;) Aug 16 14:59:52 ofonod[19299]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 14:59:52 ofonod[19299]: Aux:< \r\nOK\r\n Aug 16 14:59:52 ofonod[19299]: Modem:< \r\n+CUSD: 1,"Prepaid-Men\777\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\777gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 14:59:52 ofonod[19299]: Aux:< \r\n+CUSD: 1,"Prepaid-Men\777\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\777gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 14:59:54 ofonod[19299]: Modem:< \r\n+CME ERROR: 100\r\n Aug 16 14:59:54 ofonod[19299]: Aux:< \r\n+CME ERROR: 100\r\n Aug 16 15:00:06 The network also times out on ZTE cards with an error :( Aug 16 15:00:29 Request wouldn't be an Agent function, you'd pass an agent to it Aug 16 15:01:49 So you'd really have RequestResponse, Notify and Release Aug 16 15:02:06 For CUSD, the stupid modems all do it differently Aug 16 15:02:34 CUSD depends on the +CSCS setting, and unless the modem supports UTF8, they all get it wrong Aug 16 15:03:12 Not to mention if the string has embedded \r or \n Aug 16 15:05:19 Can we switch the charset first for every command? Aug 16 15:05:29 Otherwise non of the German operators will ever work. Aug 16 15:05:34 Doesn't help if CUSD is unsolicited Aug 16 15:06:03 Why not? Aug 16 15:06:34 Because we actually switch the charset in some situations (like phonebook import) Aug 16 15:06:42 Anyway, in your case its the parser screwing up Aug 16 15:06:51 We don't take '" "' into account Aug 16 15:07:51 Do we need a different parser for this as well. It should already be using permissive. Aug 16 15:09:05 We probably just need to update the STATE_RESPONSE to go into another STATE_RESPONSE_STRING when we see " Aug 16 15:09:16 and go back to STATE_RESPONSE from STATE_RESPONSE_STRING when we see another " Aug 16 15:09:30 Then hope to god there are no embedded " Aug 16 15:09:46 I am lost now. Aug 16 15:10:10 holtmann: ofonod[19299]: Aux:< \r\n+CUSD: 1,"Prepaid-Men\777\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\777gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 15:10:20 See how there's a \r\n after Prepaid-Men? Aug 16 15:10:23 You mean in GAtSyntax? Aug 16 15:10:43 both parsers treat that as an end of line Aug 16 15:10:48 The \777 is u-umlaut btw. Aug 16 15:10:50 Even though its part of the string Aug 16 15:11:27 Yeah, the octal escape is another problem :( Aug 16 15:11:29 So that needs actually fixing. Don't we have the same crap with MBM and STK and v1 parser. Aug 16 15:11:44 All parsers are setup like this Aug 16 15:11:48 Actually that is the debug code in GAtChat doing that. Aug 16 15:12:46 What character set do you have set on that modem? Aug 16 15:13:19 GSM doesn't have \777 as valid Aug 16 15:13:23 No idea. Aug 16 15:14:02 I did the PB testing in between, but it goes back to this: Aug 16 15:14:03 ofonod[19299]: Aux:> AT+CSCS="IRA"\r Aug 16 15:14:03 ofonod[19299]: Aux:< \r\nOK\r\n Aug 16 15:14:34 But as I said, the GAtChat debug function does its own magic here. Aug 16 15:14:54 The \777 is most likely not what you see on the modem. Aug 16 15:15:10 \777 makes no sense Aug 16 15:15:33 Something is wrong there Aug 16 15:16:13 Check the debug char conversation code. Aug 16 15:16:15 ofonod[19299]: Aux:> AT+CUSD=1,"*104#",15\r Aug 16 15:16:15 ofonod[19299]: Aux:< \r\nOK\r\n Aug 16 15:16:15 ofonod[19299]: Modem:< \r\n+CUSD: 1,"Packmanager\r\n\r\n2 Pack buchen \r\n",15\r\n Aug 16 15:16:15 ofonod[19299]: Aux:< \r\n+CUSD: 1,"Packmanager\r\n\r\n2 Pack buchen \r\n",15\r\n Aug 16 15:16:18 ofonod[19299]: Aux:> AT+CUSD=2\r Aug 16 15:16:18 ofonod[19299]: Aux:< \r\nOK\r\n Aug 16 15:16:33 So cancel actually works for me. In case I call it before it network side times out. Aug 16 15:17:05 That is on ZTE hardware. I can test the others as well. I think the problem is that we never get told when it timed out. Aug 16 15:17:18 We are supposed to Aug 16 15:17:28 The modem always should tell us Aug 16 15:17:45 escaped_str[escaped++] = '\\'; Aug 16 15:17:45 escaped_str[escaped++] = '0' + ((c >> 6) & 07); Aug 16 15:17:45 escaped_str[escaped++] = '0' + ((c >> 3) & 07); Aug 16 15:17:46 escaped_str[escaped++] = '0' + (c & 07); Aug 16 15:17:50 Ok, that seems wrong... Aug 16 15:19:17 Crap and now I am stuck in a USSD transaction where the network never answers. Aug 16 15:19:29 We can not cancel it from our side. It is in active state. Aug 16 15:19:38 pessi, I found several places in isimodem/voicecall.c with presentation checks. what places must be checked first? Aug 16 15:20:24 denkenz: In that case USSD is screwed up and only reboot will help. Why can't we cancel USSD in active state? Aug 16 15:21:11 We do it something like: Aug 16 15:21:22 CUSD=foo <-- Request Aug 16 15:21:32 if the request returns, then we assume we can cancel Aug 16 15:21:52 otherwise we assume this is a non-cancelable transaction Aug 16 15:21:52 ofonod[26739]: Aux:> AT+CUSD=1,"*106#",15\r Aug 16 15:21:53 ofonod[26739]: Aux:< \r\nOK\r\n Aug 16 15:21:56 And then nothing. Aug 16 15:22:05 So cancel should work Aug 16 15:22:20 Cancel returns with: Aug 16 15:22:21 dbus.exceptions.DBusException: org.ofono.Error.InProgress: Operation already in progress Aug 16 15:22:49 {SupplementaryServices} [/zte1] State = active Aug 16 15:22:56 So the state transitions to active. Aug 16 15:23:49 ofonod[26824]: Aux:> AT+CSCS=?\r Aug 16 15:23:50 ofonod[26824]: Aux:< \r\n+CSCS: ("IRA","GSM","UCS2")\r\n\r\nOK\r\n Aug 16 15:23:55 Btw. in case you wanna know. Aug 16 15:25:18 Ok that's a bug Aug 16 15:29:59 Easy fixable? Aug 16 15:33:34 gimme 5 min Aug 16 15:42:16 holtmann: Try the fix I pushed Aug 16 15:46:32 ofonod[27625]: Aux:> AT+CUSD=1,"*106#",15\r Aug 16 15:46:32 ofonod[27625]: Aux:< \r\nOK\r\n Aug 16 15:46:32 ofonod[27625]: Modem:< \r\n+CUSD: 5\r\n Aug 16 15:46:32 ofonod[27625]: Aux:< \r\n+CUSD: 5\r\n Aug 16 15:47:16 And second time I get this: Aug 16 15:47:17 ofonod[27625]: Aux:> AT+CUSD=1,"*106#",15\r Aug 16 15:47:17 ofonod[27625]: Aux:< \r\nOK\r\n Aug 16 15:47:17 ofonod[27625]: Modem:< \r\n+CUSD: 0,"Lieber o2 Prepaid-Kunde, diese Abfrage steht Ihnen nur im Tarif o2 LOOP S/M/L zur Verf\777gung. Tarifwechsel k\777nnen Sie \777ber die Rufnummer 5667 vornehmen. (E06)",15\r\n Aug 16 15:47:17 ofonod[27625]: Aux:< \r\n+CUSD: 0,"Lieber o2 Prepaid-Kunde, diese Abfrage steht Ihnen nur im Tarif o2 LOOP S/M/L zur Verf\777gung. Tarifwechsel k\777nnen Sie \777ber die Rufnummer 5667 vornehmen. (E06)",15\r\n Aug 16 15:47:26 Seems the o2 network has no idea what it is doing. Aug 16 15:47:34 At least for undefined USSD codes. Aug 16 15:48:18 ofonod[27625]: Aux:> AT+CUSD=1,"*106#",15\r Aug 16 15:48:18 ofonod[27625]: Aux:< \r\nOK\r\n Aug 16 15:48:18 ofonod[27625]: Aux:> AT+CUSD=2\r Aug 16 15:48:18 ofonod[27625]: Aux:< \r\nOK\r\n Aug 16 15:48:20 ofonod[27625]: Modem:< \r\n+CUSD: 2\r\n Aug 16 15:48:21 ofonod[27625]: Aux:< \r\n+CUSD: 2\r\n Aug 16 15:48:29 Seems to be fine now. Pretty hard to get into this state. Aug 16 15:48:41 dbus.exceptions.DBusException: org.ofono.Error.Canceled: Operation has been canceled Aug 16 15:48:59 That error message is funny. Wouldn't expect an error when calling Cancel(). Aug 16 15:49:18 No, the Canceled should be for the Initiate Aug 16 15:49:26 double check that for me Aug 16 15:49:56 I did cancel. Aug 16 15:50:06 ofonod[27625]: Aux:> AT+CUSD=1,"*111#",15\r Aug 16 15:50:06 ofonod[27625]: Aux:< \r\nOK\r\n Aug 16 15:50:06 ofonod[27625]: Modem:< \r\n+CME ERROR: 100\r\n Aug 16 15:50:06 ofonod[27625]: Aux:< \r\n+CME ERROR: 100\r\n Aug 16 15:50:17 At least for other codes it returns an error. Aug 16 15:50:40 + if (ussd->pending) { Aug 16 15:50:40 + reply = __ofono_error_canceled(ussd->pending); Aug 16 15:50:41 + __ofono_dbus_pending_reply(&ussd->pending, reply); Aug 16 15:50:41 + } Aug 16 15:50:50 So Canceled should go to the Initiate, not the Cancel Aug 16 15:51:02 ofonod[27625]: Aux:> AT+CUSD=1,"*111#",15\r Aug 16 15:51:03 ofonod[27625]: Aux:< \r\nOK\r\n Aug 16 15:51:03 ofonod[27625]: Modem:< \r\n+CME ERROR: 100\r\n Aug 16 15:51:03 ofonod[27625]: Aux:< \r\n+CME ERROR: 100\r\n Aug 16 15:51:03 ofonod[27625]: Aux:> AT+CUSD=2\r Aug 16 15:51:03 ofonod[27625]: Aux:< \r\nERROR\r\n Aug 16 15:51:06 ofonod[27625]: Aux:> AT+CUSD=2\r Aug 16 15:51:07 ofonod[27625]: Aux:< \r\nERROR\r\n Aug 16 15:51:09 ofonod[27625]: Aux:> AT+CUSD=2\r Aug 16 15:51:13 ofonod[27625]: Aux:< \r\nERROR\r\n Aug 16 15:51:15 ofonod[27625]: Aux:> AT+CUSD=2\r Aug 16 15:51:17 ofonod[27625]: Aux:< \r\nERROR\r\n Aug 16 15:51:19 And I can't cancel these ones. They keep in active state. Aug 16 15:51:39 This is nasty carp. The error or timeout of USSD arrives via +CME notification. Aug 16 15:52:13 denkenz: The Cancel() call needs to reset the state even if CUSD=2 fails. Aug 16 15:53:08 I am stuck in an active USSD now. At least according to oFono, but the modem is already idle again. Aug 16 15:53:16 So only restart of ofonod can fix this. Aug 16 15:53:32 Ok, take that modem, and throw it out of the Window ;) Aug 16 15:54:18 Sure. On to the pile of the other 100. Aug 16 15:54:36 Problem is just that you told me that even for me internal MBM modem ;) Aug 16 15:55:04 hehe Aug 16 15:55:26 Your mbm is a saint compared to this Aug 16 15:55:44 And I don't think Cancel should reset the state Aug 16 15:55:59 Because on another modem it won't work this way Aug 16 15:56:41 Then we have to quirk it. That would be fine with me. However we can't have oFono being blocking the API and rendering USSD unusable only because of a user error. Aug 16 15:57:21 All Qualcomm modems seem to be broken this way. Aug 16 15:57:56 Yeah, so all Qualcomm modems can have USSD disabled Aug 16 15:58:34 And there's a race condition now in my fix... :( Aug 16 15:58:42 Can I hide under a rock somewhere? :) Aug 16 16:03:07 denkenz: Nope. We need USSD enabled for Qualcomm modems. Aug 16 16:03:24 And you can hide under a rock as long as you take your laptop with you. Aug 16 16:03:37 That's a pretty large rock then Aug 16 16:04:11 And laptop power only lasts for 2 hours or so, next you'll be telling me there should be an AC outlet there too Aug 16 16:04:57 While you are at. Maybe a car battery is not a bad idea either ;) Aug 16 16:05:29 But then, AC enabled rocks could be a nice business model. Aug 16 16:05:50 Anyway, I think I fixed the Cancel race conditions Aug 16 16:06:04 However, I've no idea what can be done about your silly CME ERROR 100 Aug 16 16:06:30 I know. That is pretty nasty handling. Aug 16 16:06:54 Since we have no idea what an unsolicited +CME responds to. Aug 16 16:08:39 ofonod[28019]: Aux:> AT+CUSD=1,"*111#",15\r Aug 16 16:08:39 ofonod[28019]: Aux:< \r\nOK\r\n Aug 16 16:08:39 ofonod[28019]: Modem:< \r\n+CME ERROR: 100\r\n Aug 16 16:08:39 ofonod[28019]: Aux:< \r\n+CME ERROR: 100\r\n Aug 16 16:08:39 ofonod[28019]: Aux:> AT+CUSD=2\r Aug 16 16:08:42 ofonod[28019]: Aux:< \r\nERROR\r\n Aug 16 16:08:43 ofonod[28019]: src/ussd.c:ussd_cancel_callback() ussd cancel failed with error: Unknown error type Aug 16 16:08:45 And I am stuck in active state. Aug 16 16:09:08 We maybe just need to use the QUALCOMM_MSM quirk to reset the sate on Cancel() method call. Aug 16 16:09:42 Also that it only says ERROR instead of giving a proper reason is pretty funny. Aug 16 16:10:03 Firmware made in China, what do you expect? Aug 16 16:10:27 [ org.ofono.SupplementaryServices ] Aug 16 16:10:27 State = active Aug 16 16:10:28 :( Aug 16 16:11:10 We would need a proper certification test suite for AT command specification. Aug 16 16:12:38 Anyhow, we need that quirk. Otherwise we dead-lock Qualcomm based cards. And not enabling USSD is not an option. Aug 16 16:15:44 Lol, why do you say that? Aug 16 16:15:53 We're probably the first ones to try USSD on these cards Aug 16 16:16:44 Operators want to use USSD. Especially the pre-paid modem cards are the only way to top up this way. You have no dialer. Aug 16 16:17:15 You might be right. We are the first ones to try this. Aug 16 16:17:24 At on Linux we are for sure the first ones every tried this. Aug 16 16:26:50 holtmann: Ok try your umlaut again Aug 16 16:30:16 USSD session state is idle Aug 16 16:30:16 (dbus.String(u'USSD'), dbus.String(u'', variant_level=1)) Aug 16 16:30:16 USSD session state is active Aug 16 16:30:16 USSD session state is idle Aug 16 16:30:20 Nothing. Aug 16 16:40:24 holtmann: I meant on the log Aug 16 16:40:30 it should show up as 377 now Aug 16 16:40:39 or something else reasonable Aug 16 16:43:36 ofonod[32073]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr\377gt 2.35 EUR. Jetzt auch Ihr Guthaben aufladen: einfach *103*Aufladenummer# und die H\377rertaste eingeben.",15\r\n Aug 16 16:43:41 It does. Aug 16 16:43:58 Btw. this is the same O2 card that you have. Aug 16 16:44:23 And since I gave you a ZTE modem, you have the same broken hardware now ;) Aug 16 16:44:27 My AT&T signal is shit, I'd spend more time on cell reselections Aug 16 16:44:43 Make it roam to T-Mobile. Aug 16 16:46:06 I have enough info to do some investigations anyway Aug 16 16:46:23 Like fixing the silly embedded \r\ns Aug 16 16:46:52 If that works we should get somewhere and then a quirk for state reset on cancel. And this should be good enough. Aug 16 16:47:09 Do your umlauts show up in the reported string? Aug 16 16:47:20 That previous USSD should display just fine Aug 16 16:47:41 I never get the string reported anywhere else than in the debug AT log. Aug 16 16:48:35 That's strange Aug 16 16:49:13 ofonod[32073]: Aux:> AT+CUSD=1,"*101#",15\r Aug 16 16:49:14 ofonod[32073]: Aux:< \r\nOK\r\n Aug 16 16:49:14 ofonod[32073]: Aux:> AT+CUSD=2\r Aug 16 16:49:45 This is the worst. The card is blocking further AT commands while waiting for the +CSUD or +CME :( Aug 16 16:53:48 Yikes Aug 16 16:53:59 You seriously need to give up on USSD with that one Aug 16 16:58:02 Most of the times it just works fine. Aug 16 16:58:42 yeah until it stalls the aux channel and you're stuck Aug 16 17:04:26 [ org.ofono.SupplementaryServices ] Aug 16 17:04:27 State = user-response Aug 16 17:04:34 ofonod[32366]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 17:04:34 ofonod[32366]: Aux:< \r\nOK\r\n Aug 16 17:04:35 ofonod[32366]: Modem:< \r\n+CUSD: 1,"Prepaid-Men\377\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\377gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 17:04:35 ofonod[32366]: Aux:< \r\n+CUSD: 1,"Prepaid-Men\377\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\377gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 17:04:35 ofonod[32366]: Aux:> AT+CUSD=1,"1",15\r Aug 16 17:05:04 And it stalls :( Aug 16 17:05:06 Not nice. Aug 16 17:05:28 I think we need to fix for the "\r\n". Aug 16 17:16:53 denkenz: I pushed initiate-ussd test script. That should also work for user-response scenarios. At least the simple one. Aug 16 17:17:53 ofonod[32540]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 17:17:53 ofonod[32540]: Aux:< \r\nOK\r\n Aug 16 17:17:53 ofonod[32540]: Modem:< \r\n+CUSD: 1,"Prepaid-Men\377\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\377gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 17:17:53 ofonod[32540]: Aux:< \r\n+CUSD: 1,"Prepaid-Men\377\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\377gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 17:17:55 ofonod[32540]: Aux:> AT+CUSD=1,"1",15\r Aug 16 17:17:56 ofonod[32540]: Aux:< \r\nOK\r\n Aug 16 17:17:58 ofonod[32540]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr\377gt 2.35 EUR. Jetzt auch Ihre Guthabenverf\377gbarkeit abrufen: einfach *102# und die H\377rertaste eingeben.",15\r\n Aug 16 17:18:01 ofonod[32540]: Aux:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr\377gt 2.35 EUR. Jetzt auch Ihre Guthabenverf\377gbarkeit abrufen: einfach *102# und die H\377rertaste eingeben.",15\r\n Aug 16 17:18:13 If I would get the umlaut strings, then this would be working fine. Aug 16 17:18:26 State: idle Aug 16 17:18:27 USSD: Aug 16 17:18:27 State: user-response Aug 16 17:18:27 Enter response: 1 Aug 16 17:18:31 But reported strings are empty. Aug 16 17:19:11 If we don't wanna do the agent style, then we should at least return the state to the Initiate() and Respond() method calls. Aug 16 17:19:26 So that the application doesn't have to monitor State property as well. Aug 16 17:19:44 And not stupidly keeps calling GetProperties like my test script does. Aug 16 17:23:53 Err, it doesn't really need to call state Aug 16 17:24:13 But I'm confused why the simple case doesn't emit the signals Aug 16 17:24:21 Or rather emits empty strings Aug 16 17:26:31 Can you set the CSCS to "GSM" ? Aug 16 17:26:50 Want me to hack that manually into it. Aug 16 17:27:17 yeah, just send it in the modem driver Aug 16 17:27:30 It seems our USSD driver does a GSM -> UTF8 conversion Aug 16 17:27:41 so maybe that umlaut is confusing it Aug 16 17:27:52 This area of the spec is fucked btw Aug 16 17:28:07 I'd rather get the USSD PDU from the modem somehow Aug 16 17:28:25 Letting the modem do the conversion is utterly braindead Aug 16 17:32:12 ofonod[5925]: Aux:> AT+CSCS="GSM"\r Aug 16 17:32:12 ofonod[5925]: Aux:< \r\nOK\r\n Aug 16 17:32:12 ofonod[5925]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 17:32:12 ofonod[5925]: Aux:< \r\nOK\r\n Aug 16 17:32:15 This breaks. Aug 16 17:32:20 No responses. Aug 16 17:33:26 So CUSD doesn't have a PDU mode? Aug 16 17:33:48 nope Aug 16 17:33:55 funny Aug 16 17:34:11 so you need to add a quirk to skip the gsm to utf8 conversion Aug 16 17:34:33 ofonod[5999]: Aux:> AT+CSCS="IRA"\r Aug 16 17:34:33 ofonod[5999]: Aux:< \r\nOK\r\n Aug 16 17:34:33 ofonod[5999]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 17:34:33 ofonod[5999]: Aux:< \r\nOK\r\n Aug 16 17:34:36 ofonod[5999]: Modem:< \r\n+CUSD: 1,"Prepaid-Men\377\r\n1 Guthabenkonto\r\n2 Guthaben-Verf\377gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Tarifinfo\r\n8 Hilfe",15\r\n Aug 16 17:34:37 That works then. Aug 16 17:34:58 try UCS2 Aug 16 17:35:03 does it work on that one? Aug 16 17:36:30 The funny part is that IRA only supports 7 bit characters Aug 16 17:36:52 so the fact that you're getting umlaut as 255, means that the firmware guys had no fucking clue what they were doing Aug 16 17:39:07 ofonod[6094]: Aux:> AT+CSCS="UCS2"\r Aug 16 17:39:07 ofonod[6094]: Aux:< \r\nOK\r\n Aug 16 17:39:07 ofonod[6094]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 17:39:07 ofonod[6094]: Aux:< \r\nERROR\r\n Aug 16 17:41:50 ofonod[6177]: Aux:> AT+CSCS="GSM"\r Aug 16 17:41:50 ofonod[6177]: Aux:< \r\nOK\r\n Aug 16 17:41:51 ofonod[6177]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 17:41:51 ofonod[6177]: Aux:< \r\nOK\r\n Aug 16 17:41:52 ofonod[6177]: Modem:< \r\n+CUSD: 1,"Prepaid-Men~\r\n1 Guthabenkonto\r\n2 Guthaben-Verf~gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Ta",15\r\n Aug 16 17:41:52 ofonod[6177]: Aux:< \r\n+CUSD: 1,"Prepaid-Men~\r\n1 Guthabenkonto\r\n2 Guthaben-Verf~gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Ta",15\r\n Aug 16 17:41:55 ofonod[6177]: Aux:> AT+CSCS="GSM"\r Aug 16 17:41:57 ofonod[6177]: Aux:< \r\nOK\r\n Aug 16 17:41:59 ofonod[6177]: Aux:> AT+CUSD=1,"1",15\r Aug 16 17:42:01 ofonod[6177]: Aux:< \r\nOK\r\n Aug 16 17:42:03 ofonod[6177]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr{gt 2.35 EUR. Jetzt auch Ihre Guthabenverf~gbarkeit abrufen: einfach *102# und die H|re",15\r\n Aug 16 17:42:06 ofonod[6177]: Aux:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr{gt 2.35 EUR. Jetzt auch Ihre Guthabenverf~gbarkeit abrufen: einfach *102# und die H|re",15\r\n Aug 16 17:42:09 ofonod[6177]: drivers/atmodem/ussd.c:cusd_parse() udhi 0 compressed 0 iso639 0 Aug 16 17:42:11 Almost ;) Aug 16 17:42:15 State: idle Aug 16 17:42:17 USSD: Aug 16 17:42:19 State: user-response Aug 16 17:42:21 Enter response: 1 Aug 16 17:42:23 Ihr Prepaid-Guthaben beträgt 2.35 EUR. Jetzt auch Ihre Guthabenverfügbarkeit abrufen: einfach *102# und die Höre Aug 16 17:43:16 Yeah, see so that's better Aug 16 17:43:34 You even get your umlauts Aug 16 17:43:47 Still the initial response has no message with it. Aug 16 17:43:57 USSD: %s this is Aug 16 17:44:13 This was a two stage USSD. I fail to see the menu. Aug 16 17:44:14 that's because of the embedded \r\n, let me push a fix Aug 16 17:45:31 holtmann: Try now Aug 16 17:49:30 Nope. Aug 16 17:49:54 ofonod[6697]: Aux:> AT+CSCS="GSM"\r Aug 16 17:49:54 ofonod[6697]: Aux:< \r\nOK\r\n Aug 16 17:49:54 ofonod[6697]: Aux:> AT+CUSD=1,"*101#",15\r Aug 16 17:49:54 ofonod[6697]: Aux:< \r\nOK\r\n Aug 16 17:49:54 ofonod[6697]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr{gt 2.35 EUR. Jetzt auch Ihr Guthaben aufladen: einfach *103*Aufladenummer# und die H|re",15\r\n Aug 16 17:49:56 ofonod[6697]: Aux:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr{gt 2.35 EUR. Jetzt auch Ihr Guthaben aufladen: einfach *103*Aufladenummer# und die H|re",15\r\n Aug 16 17:49:58 ofonod[6697]: drivers/atmodem/ussd.c:cusd_parse() udhi 0 compressed 0 iso639 0 Aug 16 17:50:04 State: idle Aug 16 17:50:04 USSD: Ihr Prepaid-Guthaben beträgt 2.35 EUR. Jetzt auch Ihr Guthaben aufladen: einfach *103*Aufladenummer# und die Höre Aug 16 17:50:06 Without it works fine. Aug 16 17:50:22 Also it is cut short btw. Aug 16 17:51:01 It is not proper German sentence. It should finish with "Hoere druecken" and not just "Hoer" Aug 16 17:51:34 hmm, were you getting the full sentence with IRA? Aug 16 17:52:15 And my patch should not affect the USSDs you're getting, strange Aug 16 17:53:15 Yes, I think I was. Aug 16 17:53:43 Btw. I am thinking the CBS interferes with the USSD in this network. Aug 16 17:54:06 ofonod[6787]: Aux:> AT+CSCS="IRA"\r Aug 16 17:54:06 ofonod[6787]: Aux:< \r\nOK\r\n Aug 16 17:54:06 ofonod[6787]: Aux:> AT+CUSD=1,"*102#",15\r Aug 16 17:54:06 ofonod[6787]: Aux:< \r\nOK\r\n Aug 16 17:54:07 ofonod[6787]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben ist bis zum 26.11.10 verf\377gbar. ",15\r\n Aug 16 17:54:07 ofonod[6787]: Aux:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben ist bis zum 26.11.10 verf\377gbar. ",15\r\n Aug 16 17:54:08 ofonod[6787]: drivers/atmodem/ussd.c:cusd_parse() udhi 0 compressed 0 iso639 0 Aug 16 17:54:37 Comapred to GSM: Aug 16 17:54:38 ofonod[6697]: Aux:> AT+CSCS="GSM"\r Aug 16 17:54:38 ofonod[6697]: Aux:< \r\nOK\r\n Aug 16 17:54:38 ofonod[6697]: Aux:> AT+CUSD=1,"*102#",15\r Aug 16 17:54:38 ofonod[6697]: Aux:< \r\nOK\r\n Aug 16 17:54:41 ofonod[6697]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben ist bis zum 26.11.10 verf~",15\r\n Aug 16 17:54:41 ofonod[6697]: Aux:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben ist bis zum 26.11.10 verf~",15\r\n Aug 16 17:54:43 ofonod[6697]: drivers/atmodem/ussd.c:cusd_parse() udhi 0 compressed 0 iso639 0 Aug 16 17:59:17 The only suggestion I have is to assume that IRA on this firmware means UTF8 Aug 16 17:59:31 And to simply skip the gsm->utf8 conversion via a quirk Aug 16 18:01:07 Otherwise my patch should not affect the behavior Aug 16 18:02:38 Give me a hint in the code to test this. Aug 16 18:03:04 if (charset == SMS_CHARSET_7BIT) ?? Aug 16 18:03:08 Yeap Aug 16 18:03:25 So I just strdup the original string? Aug 16 18:03:52 Basically cusd parse with your quirk would just ofono_ussd_notify and return Aug 16 18:04:09 Right before cbs_dcs_decode Aug 16 18:04:14 if (converted) Aug 16 18:04:14 g_free(converted); Aug 16 18:04:20 Dude, really ;) Aug 16 18:04:38 Hey, that code is ancient ;) Aug 16 18:04:51 That driver was among the first written Aug 16 18:05:51 So I really think that USSD and CBS conflicts in this firmware. Aug 16 18:07:05 ofonod[7138]: Modem:< \r\n+ZPSTM: 4,534D53205365727669636573;1,496E666F205365727669636573;2,577C7274657262756368;3,454D61696C;4,466178;\r\n Aug 16 18:07:05 ofonod[7138]: Aux:< \r\n+ZPSTM: 4,534D53205365727669636573;1,496E666F205365727669636573;2,577C7274657262756368;3,454D61696C;4,466178;\r\n Aug 16 18:07:09 What the f* is this. Aug 16 18:07:29 ofonod[7138]: Modem:< \r\n+ZEND\r\n Aug 16 18:07:29 ofonod[7138]: Aux:< \r\n+ZEND\r\n Aug 16 18:07:30 ofonod[7138]: Modem:< \r\n+ZEND\r\n Aug 16 18:07:30 ofonod[7138]: Aux:< \r\n+ZEND\r\n Aug 16 18:07:33 SIM Toolkit ??? Aug 16 18:09:52 Probably Aug 16 18:10:23 Though nothing I recognize Aug 16 18:10:34 STM could be SIM Toolkit Menu. Aug 16 18:10:52 P = Proactive. Aug 16 18:11:59 Get STK Main Menu +ZSTM Aug 16 18:12:14 Select Main Menu Item +ZSELM Aug 16 18:12:23 Sub-menu Items Reports +ZSTI Aug 16 18:12:32 Select Sub-menu Item +ZSELI Aug 16 18:12:40 Requests for Text Display +ZDIST Aug 16 18:12:49 Requests for Character Input +ZGINK Aug 16 18:12:57 Requests for Text String Input +ZGINP Aug 16 18:13:05 Requests for Build Main Menu +ZPSTM Aug 16 18:13:10 Yeah, that type of STK is nasty though Aug 16 18:13:16 Requests for Rebuild Main Menu +ZEND Aug 16 18:13:18 Because we need to re-encode those requests Aug 16 18:13:32 Anyway, I pushed one more fix for embedded \r\n handling Aug 16 18:13:42 Menu Backwards +ZBK Aug 16 18:13:45 And some more ;) Aug 16 18:13:45 So try that again Aug 16 18:14:07 The Telit UC864 is the same way Aug 16 18:14:19 And we have docs for that one Aug 16 18:14:45 Same Qualcomm based firmware Aug 16 18:14:53 Just different prefixes Aug 16 18:15:54 http://www.google.de/url?sa=t&source=web&cd=4&ved=0CCMQFjAD&url=http%3A%2F%2Fwww.siptune.net%2Fdownloads%2Fonda-at-commands.pdf&rct=j&q=%22%2BZPSTM%22&ei=Hn9pTPmPLMyecZSsnJAF&usg=AFQjCNH9_phDL-o3snWz9ueNj0oK_BsGAA&cad=rja Aug 16 18:16:12 onda-at-commands.pdf Aug 16 18:16:24 So do we actually wanna support these cards as well? Aug 16 18:17:05 www.siptune.net/downloads/onda-at-commands.pdf Aug 16 18:18:27 these are lower priority since we have to re-encode the commands as I mentioned Aug 16 18:18:49 That requires some serious work in the at command encoder Aug 16 18:18:56 s/at/proactive/ Aug 16 18:19:13 So you don't wanna just map the STK Agent to these commands. You wanna re-encode them? Aug 16 18:19:50 I don't wanna make stkutil public api Aug 16 18:20:06 So for now we deal with lowlevel pdus Aug 16 18:20:20 Otherwise we'd need to deal with stk_proactive_command structures and have drivers fill them in Aug 16 18:20:31 Okay. Aug 16 18:20:56 So back to USSD. Skipping the UTF-8 conversion ends up with a timeout on the D-Bus method call. Aug 16 18:21:03 Meaning it is not valid UTF-8 in the end. Aug 16 18:21:13 Hah Aug 16 18:21:42 Maybe it is just latin-1. Aug 16 18:21:51 latin-1 == utf8 Aug 16 18:21:58 No it is not. Aug 16 18:22:09 Well, more like latin-1 is contained in utf8 Aug 16 18:22:25 Nope. Only Ascii is contained in UTF-8 and Latin-1. Aug 16 18:22:40 The 8bit in UTF-8 is for encoding and in Latin-1 it is the ext. charset. Aug 16 18:22:45 At least if I am not mistaken. Aug 16 18:23:34 Except it is some two-stage magic in UTF-8, where first latin-1 and then some bit in the ext charset gets redefined for the rest, but I doubt that. Aug 16 18:24:01 Code values 00–1F, 7F–9F are not assigned to characters by ISO/IEC 8859-1. Aug 16 18:24:52 ISO-8859-1 was also incorporated as the first 256 code points of http://en.wikipedia.org/wiki/ISO/IEC_10646 and http://en.wikipedia.org/wiki/Unicode. Aug 16 18:26:26 So not UTF8, it was Unicode Aug 16 18:26:35 UTF8 has other magic in it Aug 16 18:26:54 Yeah. What a mess. Aug 16 18:28:51 So this is Latin-1. How do I get that back into UTF-8. Aug 16 18:29:01 Its not Latin-1 Aug 16 18:29:35 Are you sure. I have one character for the umlaut. And in UTF-8 every umlaut should be two or more characters. Aug 16 18:30:02 Hmm... Aug 16 18:30:10 Ok, its possible it is Latin1 :) Aug 16 18:30:51 Problem is, this will still break Aug 16 18:31:00 The Latin1 set doesn't contain the Euro sign Aug 16 18:31:06 Which is actually valid GSM Aug 16 18:31:21 So you can try g_convert and pass in 8859-1... Aug 16 18:35:49 Ihr Prepaid-Guthaben ist bis zum 26.11.10 verfÿgbar. Aug 16 18:35:53 Hah. Almost ;) Aug 16 18:36:09 It needs to be an u-umlaut and not a y-umlaut. Aug 16 18:36:42 State: idle Aug 16 18:36:42 USSD: Ihr Prepaid-Guthaben ist bis zum 26.11.10 verfÿgbar. Aug 16 18:36:56 What the f* is the actual encoding of this :( Aug 16 18:38:08 denkenz: Btw. the ISO-8859-15 variant has the Euro symbol. Aug 16 18:38:16 Yeap Aug 16 18:38:20 But god knows what this is Aug 16 18:38:25 Since the modem says 'IRA' :) Aug 16 18:38:36 Besides, GSM also has some cyrillic chars Aug 16 18:43:44 e.g. 0x18 in gsm -> 0x03A3 unicode Aug 16 18:43:55 so the internal latin* conversion is fucked ;) Aug 16 18:44:16 The only way to do this right is to use GSM or UCS2 and pray to god the modem does it right Aug 16 18:46:13 It is not 437 is it? Aug 16 18:46:27 437? Aug 16 18:47:06 This stupid non-sense FAT codepage fun stuff. Aug 16 18:49:02 Or 850 which is the Europe version. Aug 16 18:52:05 No idea Aug 16 18:53:39 State: idle Aug 16 18:53:39 USSD: Ihr Prepaid-Guthaben ist bis zum 26.11.10 verf gbar. Aug 16 18:53:41 Nope :( Aug 16 18:53:46 Some other weird codepage :( Aug 16 18:54:45 Was it breaking on GSM? Aug 16 18:56:05 It was only returning truncated details. Aug 16 18:56:28 Have you tried with the extract_line patch? Aug 16 18:57:01 State: idle Aug 16 18:57:01 USSD: Ihr Prepaid-Guthaben ist bis zum 26.11.10 verfü Aug 16 18:57:27 fun Aug 16 18:57:32 ofonod[8811]: Aux:> AT+CSCS="GSM"\r Aug 16 18:57:32 ofonod[8811]: Aux:< \r\nOK\r\n Aug 16 18:57:32 ofonod[8811]: Aux:> AT+CUSD=1,"*102#",15\r Aug 16 18:57:33 ofonod[8811]: Aux:< \r\nOK\r\n Aug 16 18:57:34 ofonod[8811]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben ist bis zum 26.11.10 verf~",15\r\n Aug 16 18:57:36 ofonod[8811]: Aux:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben ist bis zum 26.11.10 verf~",15\r\n Aug 16 18:57:39 different umlauts too Aug 16 18:57:41 So the modem wrongly stops converting it. Aug 16 18:57:57 Only other choice is UCS2 Aug 16 18:58:03 But that wasn't working at all right? Aug 16 18:58:07 And that is what the modem refuses. Aug 16 18:58:17 One last choice: Toss ;) Aug 16 18:58:52 Not an option. Aug 16 19:00:20 Try this under MBM with UTF8 as the CSCS Aug 16 19:00:43 The MBM supports UTF8 ? Aug 16 19:00:47 yeah Aug 16 19:01:50 ofonod[8857]: Aux:> AT+CSCS="GSM"\r Aug 16 19:01:51 ofonod[8857]: Aux:< \r\nOK\r\n Aug 16 19:01:51 ofonod[8857]: Aux:> AT+CUSD=1,"*100#",15\r Aug 16 19:01:51 ofonod[8857]: Aux:< \r\nOK\r\n Aug 16 19:01:53 ofonod[8857]: Modem:< \r\n+CUSD: 1,"Prepaid-Men~\r\n1 Guthabenkonto\r\n2 Guthaben-Verf~gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Ta",15\r\n Aug 16 19:01:53 ofonod[8857]: Aux:< \r\n+CUSD: 1,"Prepaid-Men~\r\n1 Guthabenkonto\r\n2 Guthaben-Verf~gbarkeit\r\n3 Aufladung Guthaben/Pack-to-Go\r\n4 Pack Manager\r\n7 Ta",15\r\n Aug 16 19:01:55 ofonod[8857]: drivers/atmodem/ussd.c:cusd_parse() udhi 0 compressed 0 iso639 0 Aug 16 19:01:57 ofonod[8857]: drivers/atmodem/ussd.c:cusd_parse() Prepaid-Men~ Aug 16 19:01:59 1 Guthabenkonto Aug 16 19:02:01 2 Guthaben-Verf~gbarkeit Aug 16 19:02:03 3 Aufladung Guthaben/Pack-to-Go Aug 16 19:02:05 4 Pack Manager Aug 16 19:02:07 7 Ta Aug 16 19:02:09 ofonod[8857]: drivers/atmodem/ussd.c:cusd_parse() Prepaid-Menü Aug 16 19:02:11 1 Guthabenkonto Aug 16 19:02:15 2 Guthaben-Verfügbarkeit Aug 16 19:02:17 3 Aufladung Guthaben/Pack-to-Go Aug 16 19:02:19 4 Pack Manager Aug 16 19:02:21 7 Ta Aug 16 19:02:23 ofonod[8857]: Aux:> AT+CSCS="GSM"\r Aug 16 19:02:25 ofonod[8857]: Aux:< \r\nOK\r\n Aug 16 19:02:27 ofonod[8857]: Aux:> AT+CUSD=1,"1",15\r Aug 16 19:02:29 ofonod[8857]: Aux:< \r\nOK\r\n Aug 16 19:02:31 ofonod[8857]: Modem:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr{gt 2.35 EUR. Jetzt auch Ihre Guthabenverf~gbarkeit abrufen: einfach *102# und die H|re",15\r\n Aug 16 19:02:34 ofonod[8857]: Aux:< \r\n+CUSD: 0,"Ihr Prepaid-Guthaben betr{gt 2.35 EUR. Jetzt auch Ihre Guthabenverf~gbarkeit abrufen: einfach *102# und die H|re",15\r\n Aug 16 19:02:37 ofonod[8857]: drivers/atmodem/ussd.c:cusd_parse() udhi 0 compressed 0 iso639 0 Aug 16 19:02:39 ofonod[8857]: drivers/atmodem/ussd.c:cusd_parse() Ihr Prepaid-Guthaben betr{gt 2.35 EUR. Jetzt auch Ihre Guthabenverf~gbarkeit abrufen: einfach *102# und die H|re Aug 16 19:02:42 ofonod[8857]: drivers/atmodem/ussd.c:cusd_parse() Ihr Prepaid-Guthaben beträgt 2.35 EUR. Jetzt auch Ihre Guthabenverfügbarkeit abrufen: einfach *102# und die Höre Aug 16 19:02:47 So the GAtChat fix works btw. Aug 16 19:02:49 Just that the GSM encoding is fuxed. Aug 16 19:02:51 Seems the last umlaut screws up the length calculation. Aug 16 19:02:53 State: idle Aug 16 19:02:55 USSD: Prepaid-Menü Aug 16 19:02:57 1 Guthabenkonto Aug 16 19:02:59 2 Guthaben-Verfügbarkeit Aug 16 19:03:01 3 Aufladung Guthaben/Pack-to-Go Aug 16 19:03:03 4 Pack Manager Aug 16 19:03:05 7 Ta Aug 16 19:03:07 State: user-response Aug 16 19:03:09 Enter response: 1 Aug 16 19:03:11 Ihr Prepaid-Guthaben beträgt 2.35 EUR. Jetzt auch Ihre Guthabenverfügbarkeit abrufen: einfach *102# und die Höre Aug 16 19:04:22 Hmm, not seeing the problem yet Aug 16 19:04:27 But then I don't speak german ;) Aug 16 19:04:55 "7 Ta" makes no sense. Aug 16 19:05:20 And "die Hoere" should be "die Horerer Taste druecken". Aug 16 19:05:45 The GSM encoder is garbage. Aug 16 19:06:08 Hmm, try this under MBM Aug 16 19:06:15 Why? Aug 16 19:06:22 I assume that works just fine. Aug 16 19:06:23 To see what the USSD actually says Aug 16 19:06:36 Remember that USSD has a limited length, so maybe the operator is being stupid Aug 16 19:07:05 It see it just fine when using IRA, but then the umlauts are broken. Aug 16 19:07:39 Ah ok, then at least oFono is doing the right thing now Aug 16 19:07:39 PDUs would have been way better. Aug 16 19:07:49 It is the modem that is fucked. Aug 16 19:08:02 See they fixed that for CBS & SMS Aug 16 19:08:09 Just never for USSD Aug 16 19:08:10 The left-over question is how do we handle the charset selection. Aug 16 19:08:29 Do we wanna always send a GSM or IRA or how? Aug 16 19:08:31 The sanest option is to set it to UTF8 Aug 16 19:08:46 That way the phonebook code won't mess with the CSCS setting Aug 16 19:08:49 I can try, but I think this modem doesn't support. Aug 16 19:09:08 Otherwise, GSM seems sanest Aug 16 19:09:17 Is it UTF-8 or UTF8. Aug 16 19:09:25 Dunno, do CSCS=? Aug 16 19:10:13 That doesn't list it. Aug 16 19:10:16 Think most do 'UTF-8' Aug 16 19:10:32 ofonod[9062]: Aux:> AT+CSCS=?\r Aug 16 19:10:32 ofonod[9062]: Aux:< \r\n+CSCS: ("IRA","GSM","UCS2")\r\n\r\nOK\r\n Aug 16 19:11:09 And in case you missed it ;) Aug 16 19:11:10 ofonod[9135]: Aux:> AT+CSCS="UCS2"\r Aug 16 19:11:10 ofonod[9135]: Aux:< \r\nOK\r\n Aug 16 19:11:10 ofonod[9135]: Aux:> AT+CUSD=1,"*102#",15\r Aug 16 19:11:10 ofonod[9135]: Aux:< \r\nERROR\r\n Aug 16 19:11:21 Only the CUSD fails. Not the CSCS. Aug 16 19:12:11 Yeah, probably because CUSD also expects the string in UCS2 Aug 16 19:12:26 We could try that. Aug 16 19:13:06 Which gets funny because the calypso doesn't work that way ;) Aug 16 19:22:39 I give up now. Aug 16 19:23:54 denkenz: So how do we handle the charset stuff. Aug 16 19:24:16 Go by default to GSM for every call. Or hope it works out and I quirk the result converting. Aug 16 19:24:46 5member:denkenz Aug 16 19:24:46 : Aug 16 19:24:46 One last choice: Toss Aug 16 19:24:50 Lol Aug 16 19:25:10 That didn't work quite right Aug 16 19:25:28 For me I'd assume the modem is in 'GSM' by default Aug 16 19:25:43 for those that support UTF8, we should set that and quirk the USSD atom not to convert Aug 16 19:26:00 IRA & other charsets simply won't work reliably Aug 16 19:26:09 UCS2 is usually even more broken Aug 16 19:26:28 Turning it on globally is futile Aug 16 19:34:59 I quirk it for now. Aug 16 19:36:22 ofonod[10005]: Aux:> AT+CPBS=?\r Aug 16 19:36:22 ofonod[10005]: Aux:< \r\n+CME ERROR: 14\r\n Aug 16 19:36:22 ofonod[10005]: Phonebook not supported by this modem. If this is in error please submit patches to support this hardware Aug 16 19:36:29 Yeah. If the SIM is not ready this fails :( Aug 16 19:39:22 Yeah, we need proper sim ready handling in the core Aug 16 19:39:34 I ran into this on the Huawei tons of times Aug 16 19:49:55 Okay. I need help. Aug 16 19:50:11 Can you convert the ussd.c to support cb_data_new and include a vendor quirk. Aug 16 19:50:15 I am kinda lost there. Aug 16 19:52:19 which quirk do you wanna support? Aug 16 19:57:50 Hold on for a second. Aug 16 19:58:11 I just made the change to get rid of cusd_req Aug 16 20:03:28 Just pushed the if () g_free cleanup for atmodem. Aug 16 20:03:36 Hope this doesn't conflict too much. Aug 16 20:03:49 It got copied everywhere. Aug 16 20:04:04 If the example code is bad, the users will also do something stupid :( Aug 16 20:04:23 denkenz: And yes, the csud_req part is what I meant. Aug 16 20:05:17 You really don't like that if (cbd) eh? :) Aug 16 20:05:40 ok, I pushed the cusd_req removal patch Aug 16 20:07:09 Nope. It is unneeded and just introduces complexity. Aug 16 20:07:47 So we only need a ussd_data now to store the vendor quirk. Aug 16 20:09:55 yep Aug 16 20:13:25 So g_free fixes are pushed. Hope I didn't miss anything. Aug 16 20:13:39 Are you working on the ussd_data->vendor thing for USSD? Aug 16 20:14:35 denkenz: And should we try to run MBM with v1 parser again since the \r\n embedded are handled now? Aug 16 20:14:37 no Aug 16 20:14:54 The v1 might be a good idea Aug 16 20:14:59 See if that works at least Aug 16 20:17:58 This is turning into a monster release again Aug 16 20:18:15 I think we must be nearing 100 commits now Aug 16 20:40:11 denkenz: Quirks pushed. Aug 16 20:40:27 denkenz: I am basically waiting for the API changes to get committed. Aug 16 20:40:31 Then we can have a new release. Aug 16 20:58:21 Yeah, I just need some time to make the API changes Aug 16 20:58:28 You weren't helping with that today :) Aug 16 21:19:51 Right. It is my fault ;) Aug 16 21:27:44 *looks at the backlog*, I said you weren't 'helping' ;) Aug 16 21:51:06 pessi: Vendor=19d2 ProdID=0063 Rev= 0.00 Aug 16 21:51:06 sameo: Manufacturer=ZTE,Incorporated Aug 16 21:51:06 sameo: Product=ZTE CDMA Technologies MSM Aug 16 21:51:13 Hah. But it is actually GSM ;) Aug 16 21:54:26 pessi, forget what i said about LineIdentification "bug". Fail comes from glib/g_convert, not from ofono. Btw, ofono handles such a fail correctly;) Aug 16 22:29:07 ofonod[15864]: Modem: > AT+CUSD=1,"*100#",15\r Aug 16 22:29:07 ofonod[15864]: Modem: < \r\n+CUSD: 1,"Kontostand: 4.32 EUR\nBitte w{hlen Sie:\n1 Konto aufladen\n2 CallNow Transfer\n3 Mein CallYa"\r\n Aug 16 22:29:07 ofonod[15864]: Modem: < \r\nOK\r\n Aug 16 22:29:07 ofonod[15864]: Modem: > AT+CUSD=1,"1",15\r Aug 16 22:29:09 ofonod[15864]: Modem: < \r\n+CUSD: 1,"Bitte w{hlen Sie:\n1 Eigenes Konto\n2 Fremdes Konto"\r\n Aug 16 22:29:09 ofonod[15864]: Modem: < \r\nOK\r\n Aug 16 22:29:12 ofonod[15864]: Modem: > AT+CUSD=2\r Aug 16 22:29:12 ofonod[15864]: Modem: < \r\nOK\r\n Aug 16 22:29:27 denkenz: That is with MBM. Seems GSM, but still not getting displayed properly. Aug 16 22:29:38 State: idle Aug 16 22:29:38 USSD: Aug 16 22:29:38 State: user-response Aug 16 22:29:38 Enter response: 1 Aug 16 22:29:40 State: user-response Aug 16 22:29:43 Messages are empty. Aug 16 22:32:15 *ESTKSMENU: Vodafone-Services,0,3\n\r1,SMS-InfoServices\n\r2,MMS-InfoServices\n\r3,MobileFun\n\r\r\n\r\n+CGREG: 1,"0442","07D979D9",2\r\n Aug 16 22:32:31 Forget about the v1 parser. Stupid ESTSMENU is not using "" at all. Aug 16 22:35:17 Yeah, the ESTSMENU stuff was crap Aug 16 22:35:31 Anyhow, no idea on what's happening with MBM Aug 16 22:36:39 holtmann: Seems like MBM does not give us a DCS Aug 16 22:36:51 if (!g_at_result_iter_next_number(&iter, &dcs)) Aug 16 22:36:54 Seems to fail Aug 16 22:37:35 Hence we don't do the conversion Aug 16 22:39:23 Can we quirk that? Aug 16 22:44:12 State: idle Aug 16 22:44:13 USSD: Kontostand: 4.32 EUR Aug 16 22:44:13 Bitte wählen Sie: Aug 16 22:44:13 1 Konto aufladen Aug 16 22:44:14 2 CallNow Transfer Aug 16 22:44:16 3 Mein CallYa Aug 16 22:44:17 State: user-response Aug 16 22:44:20 Enter response: 3 Aug 16 22:44:22 Wenn Sie ein WAP-faehiges Handy nutzen, erhalten Sie in Kuerze eine Nachricht mit dem Link zum kostenlosen Handyportal Aug 16 22:44:25 If I hack that out. Aug 16 22:46:35 denkenz: Do we bother quirking it or just default to 7-bit. Aug 16 22:51:07 denkenz: I pushed a fix for it. If you don't like, then tell me and I add a quirk for it. Aug 16 22:51:36 MBM and USSD works pretty nice actually. Nothing compared to the crap Qualcomm puts in their firmware. Aug 16 22:52:19 If they wouldn't have fucked up the ESTKSMENU stuff, it would be gold standard. Aug 16 22:52:28 Hope we can turn these message off. Aug 16 23:07:38 what property can I query to find my own phone number? Aug 16 23:09:57 holtmann: denkenz ??? Aug 16 23:34:15 :( Aug 16 23:49:14 mikeleib: yes? Aug 16 23:49:24 holtmann: nod, the ESTK* stuff is nasty Aug 16 23:50:11 denkenz: what is the ofono way to find my own phone number? Aug 16 23:50:30 in my settings gui, there is a "my number: 555-555-5555" kind of thing Aug 16 23:50:41 SimManager.SubscriberNumbers Aug 16 23:50:43 but I can't find the correct property to read for this Aug 16 23:50:50 how do I know which one is the RightOne? Aug 16 23:51:04 It depends on the MSP profile selected Aug 16 23:51:13 and it's perplixingly readwrite Aug 16 23:51:16 But for now, the first one Aug 16 23:51:33 Yeah, the SIMs generally do not come pre-provisioned with the number Aug 16 23:51:52 * mikeleib will make it a label, not a textedit Aug 16 23:52:13 Won't work, as I said, the user generally has to enter it himself Aug 16 23:52:31 The network simply associates a number with a IMSI when you buy a plan Aug 16 23:52:45 when I get a phone, the sim comes provisioned with the number Aug 16 23:52:59 I've never had to dump my number into my phone unless I do one of those pay as you go phones Aug 16 23:53:25 in a user-settings app, you think # should be writable by user? Aug 16 23:56:23 yes, even the iPhone does that Aug 16 23:56:36 and what tech are we talking about, GSM or CDMA? Aug 16 23:56:54 it's an ofono front end. I assume GSM Aug 16 23:57:09 but, if ofono wants to talk CDMA, then the settings app shouldn't locked to one or the other Aug 16 23:57:21 No, I meant in your pre-provisioned phone # experience Aug 16 23:57:33 My experience is actually the opposite, and I had a lot of sims ;) Aug 16 23:57:35 that's my experience on gsm and cdma Aug 16 23:57:46 I bought my iphone and it knew the phone$ Aug 16 23:57:54 Mine didn't ;) Aug 16 23:58:01 of course.. itunes may have done something Aug 16 23:58:28 when I had a t68i that I went throughout europe with. I had a sim for each country.. I had to enter that data Aug 16 23:59:13 It depends on the carrier / plan Aug 16 23:59:22 But the vast majority do not pre-provision Aug 16 23:59:42 ok. I can make it into a text edit. But, how do I validate the #? Aug 17 00:00:16 oFono will validate it, so if you call SetProperty and it returns InvalidFormat, then you know the format isn't OK Aug 17 00:00:54 I generally do a fire and forget for setProperty Aug 17 00:01:00 but.. I can try to make this more better Aug 17 00:01:13 In general optional + followed by 1..20 digits Aug 17 00:01:28 surely I can't just enter any phone# at any time, can I? Aug 17 00:01:34 doesn't the network crap all over you? Aug 17 00:01:46 Nope, the network doesn't even do the number stuff Aug 17 00:01:50 Only the IMSI matters Aug 17 00:02:12 cell phones are weird Aug 17 00:03:50 Basically, doing the same thing as the iPhone my number setting is as good as it gets Aug 17 00:04:04 The entry is essentially freeform and can be any number Aug 17 00:04:28 * mikeleib has a phone number input filter and will just use that Aug 17 00:04:30 The only thing oFono checks for is that it can be stored on the SIM in the BCD format Aug 17 00:05:05 so no -,+ etc? Aug 17 00:05:33 derp.. I need to send ofono just numbers, don't I? Aug 17 00:06:20 I'm just sending the value of the textedit for fields. It may have + and - in them Aug 17 00:07:28 denkenz: do I need to send just digits? Aug 17 00:23:52 mikeleib: You can send the '+' as the first digit Aug 17 00:23:59 After that only digits Aug 17 00:24:03 grr Aug 17 00:25:15 denkenz: would be nice if ofono could eat them.. I know glib has handy regex lib Aug 17 00:33:55 * mikeleib flees the scene **** ENDING LOGGING AT Tue Aug 17 02:59:57 2010