<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div>I’ve been fighting a problem for the past few months with registration getting denied on T-Mobile in USA using Hologram and our new 4G SIM7600G modem. Without cellular connectivity at home, it hasn’t been easy to recreate this, but I found a solution:<div class=""><br class=""></div><div class=""><img apple-inline="yes" id="854205C5-99A6-44DC-8BED-2F891F855936" src="cid:1FB3BFA5-45F2-49C3-9AF5-7F9599342AB6" class=""></div><div class=""><br class=""></div><div class="">Finally, with a good high gain antenna on my external wall facing the nearest cellular tower a couple of km away, I can get cellular (and even GPS with the little black puck) connectivity.</div><div class=""><br class=""></div><div class="">So back to the two issues we are having:</div><div class=""><br class=""></div><div class=""><ol class="MailOutline"><li class="">The FPLMN blacklist in the modem lists a bunch of cellular networks we are blocked from connecting to (including the ones we need).<br class=""><br class=""></li><li class="">There have been reports that the connection to hologram works and is maintained, but the OVMS never connects to the v2 server.</li></ol></div><div class=""><br class=""></div><div class="">To address #1, I have extended the “cellular cmd” command to try to capture the output from the modem. There is no simple way of knowing when the command has completed, so for the moment I just look at data returned from the modem on the command channel, and stop when it hasn’t changed for a second or so. That now works like this:</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">OVMS# cellular cmd AT+CRSM=176,28539,0,0,12</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFF"</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">OK</span></font></div></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class=""><br class=""></span></font></div><div class=""><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">OVMS# cellular cmd ATI</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">Manufacturer: SIMCOM INCORPORATED</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">Model: SIMCOM_SIM7600G</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">Revision: SIM7600M21-A_V2.0.1</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">SVN: 01</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">IMEI: (redacted)</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">+GCAP: +CGSM</span></font></div><div class=""><font face="Andale Mono" class=""><span style="font-style: normal;" class="">OK</span></font></div></div></blockquote><div class=""><br class=""></div><div class="">If required, we can send a relatively simple command to clear the <span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">FPLMN</span> blacklist. It seems to work well, but I still need to test it wider (especially over v2 protocol commands, where I think we might have a recursion problem).</div><div class=""><br class=""></div><div class="">So on to issue #2 that has been much harder to find. Finally, working with Hologram, I discovered that the problem seems to be in our handling of CREG network registration messages. I found a module with this problem, and manually issuing commands I found:</div><div class=""><br class=""></div><div class=""><ul class="MailOutline"><li class="">AT+CREG?    Registration Denied</li><li class="">AT+CGREG?    Registration Denied</li><li class="">AT+CEREG?     Registered Roaming</li></ul></div><div class=""><br class=""></div><div class="">It seems that the E-UTRANS (some 4G LTE carriers) won’t show the registration status correctly in AT+CREG. I guess they are refusing GSM (3G) connections from us (aka ‘Registration Denied’) while allowing 4G LTE. But as we only use the AT+CREG status to know whether we are connected to the network, the result is we can’t detect the E-UTRANS LTE connection and think registration has been denied. Connected to Hologram, but no data (or v2 server) connection.</div><div class=""><br class=""></div><div class="">I did some research, and can’t find a definitive answer to how best to do this (especially as we have both 3G and 4G options, still support 2G, and a lot seems to depend on the individual cellular carrier options). So I implemented it as best I could. I re-ordered the registration statuses to be in lowest priority order, then created m_netreg_d[3] to store the registration status for each of the three types. Finally, I changed it so that m_netreg reflects the highest registration status. That way if CREG says RegistrationDenied, and CEREG says RegisteredRoaming, I treat it as RegisteredRoaming.</div><div class=""><br class=""></div><div class="">This seems to work (on my test bench at least), and I now plan to deploy for wider testing. Code is committed and built as 3.3.002-45-g42546636 on the main firmware site.</div><div class=""><br class=""></div><div class="">I would gratefully appreciate feedback on this.</div><div class=""><br class=""></div><div class="">Regards, Mark.</div><div class=""><br class=""></div></body></html>