Curiosity
Candidato per il modem di produzione “antifurto” Visla. Cat-1 SimCom su chipset ASR1603 in package LCC+LGA 24×24×2.4mm, con Jamming Detection di serie (●) su tutte le varianti — rileva i disturbatori GSM/GPS dei ladri → feature killer antifurto (il G11L-SE SeeWorld ce l’ha). In più: BLE 5.0 e GNSS opzionali, VoLTE, WiFi-scan, e interfacce ricche (LCD, Camera). Certificazioni operator-grade (CE-RED + GCF + Deutsche Telekom + BT sull’A7672E) → roaming EU più liscio. Open-SDK per firmware custom on-chip.
❌ Deep-PSM: NO (bench 22/07/2026, misura pulita VBAT diretta). Registrato Vodafone Cat-1 (idle ~19.5 mA), richiesto
AT+CPSMS=1e forzato WindTre (che concede PSM ai Qualcomm): la corrente NON scende, resta ~25 mA per 90s. L’ASR1603 non entra in deep-PSM — come l’A7670E, ma stavolta senza confound board-level. → Per il low-power a batteria evitare l’A7672: serve un chip Qualcomm (EG800Q / SIM7672, stesso QCX216, che al banco crollava a µA). Regola: SimComA7xxx= ASR (no PSM),SIM7xxx= Qualcomm (PSM). L’A7672 resta valido solo per feature (Jamming/BLE/Open-SDK), non per l’autonomia.
Specs tecniche (HW Design R2 V1.04)
| Parametro | A7672E (EU) | A7672G (Global) |
|---|---|---|
| Tech | LTE Cat-1 (+2G GSM) | Cat-1 + 2G + TDD |
| Chipset | ASR1603 | ASR1603 |
| Bande EU | B1/B3/B5#/B7/B8/B20/B28# | global (B1-B66 + TDD) |
| Jamming Detection | ✅ ● di serie | ✅ ● |
| BLE 5.0 | opz. | NA |
| GNSS | opz. | NA |
| Wi-Fi Scan | opz. | ✅ |
| Sleep @LTE | 1.5 mA | 1.5 mA |
| VoLTE / FOTA | ✅ | ✅ |
| Interfacce | UART·USB·I2C·ADC·Audio·LCD·Camera·GPIO | idem |
| Package | LCC+LGA 24×24×2.4mm | idem |
| Cert | CE-RED/GCF/Deutsche Telekom/BT/RCM/NCC | CE-RED/FCC/Anatel |
#= banda/feature dipendente dalla sub-variante.
🏆 Risultati banco Visla (16/07/2026) — il single-chip funziona
Core board A7672E-FASE testata via Waveshare USB-TTL (115200), alimentata a 5V su VIN (regolatore onboard), SIM 1NCE.
Identità reale del modulo:
ATI → Model: A7672E-FASE ← variante CON GNSS (l'annuncio diceva LASE!)
AT+CGMR → A011B19A7672M7_F (firmware, "_F" = FASE)
AT+CGSN → 868569082627709
| Funzione | Esito | Prova al banco |
|---|---|---|
| LTE Cat-1 | ✅ | +CPIN: READY, CSQ 19-29, 5 operatori IT visti |
| GNSS | ✅ | AT+CGNSSPWR=1 → +CGNSSPWR: READY! → 1,0,1. Nessun fix (serve antenna su GPSANT) |
| BT Classic + BLE | ✅ REALE | AT+BTPOWER=1 OK · +BTADDR: 14:00:20:9A:7D:6D · +BLEADDR: "14:00:20:9a:7d:6d" |
| ⭐ BLE scan | ✅ DIMOSTRATO | AT+BTSCAN=1,1,20 → +BTSCAN: 0,1,S001,06:0A:FE:43:54:07,190 — device + RSSI, ripetibile (anche senza antenna BT) |
| SSL/TLS | ✅ | AT+CSSLCFG=? → sslversion/authmode/ignorelocaltime… (smentisce la recensione AliExpress “non supporta HTTPS”) |
| ⭐ Open-SDK | ✅ FIRMWARE COMPILATO | SDK portato su Linux → customer_app.bin 171 KB con task tracker Visla dentro (sezione sotto) |
| Wi-Fi Scan | ⚠️ verdetto DA RIFARE | 0 AP col BT acceso · 1 AP @ −93 dBm col BT spento — ma senza antenna 2.4 GHz: stessa firma che sull’EG915U si è rivelata solo antenna mancante (→ 9 AP con antenna) |
| Jamming Detection | ⚠️ da trovare | AT+CJAMDET=? → ERROR (nome comando diverso da quello ipotizzato) |
⭐ Significato: un chip solo = tutto il tracker
LTE + GPS + BLE (antifurto beacon) + SSL + firmware custom in ~10€. Sostituisce XIAO/nRF52840 + GPS esterno + MCU. L’RSSI del BLE scan è la metrica per l’arm/disarm da beacon del proprietario (roadmap v2). Stessa architettura del concorrente SeeWorld W18L (EG915U OpenCPU).
🔥 Firmware single-chip: compilato al banco (16/07/2026)
Domanda di partenza: “che potenziale ha senza MCU dedicata?” → risposta: si compila un firmware Visla che gira dentro il modem.
Cosa è l’OpenSDK in pratica
L’app non è un programma standalone: è un task ThreadX che il firmware chiuso del modem carica e avvia. Si registra in una sezione ELF dedicata e riceve la tabella delle API come argomento:
appRegItem_t helloworldapp_entry _appRegTable_attr_ = {.app_entry = Application};
static void Application(void *argv) {
unsigned long *apiTable = (unsigned long*)argv;
get_sAPI(apiTable); // popola i puntatori sAPI_*
sAPP_VislaTrackerDemo(); // il nostro task
}
Le 396 API sAPI_* sono puntatori a funzione (extern _sAPI_GnssInfoGet sAPI_GnssInfoGet;) risolti a runtime dal firmware SimCom. Si linka contro simcom_lib.lib (129 KB) — il core del modem resta closed-source, l’app ci parla via jump table.
⭐ C’è tutto lo stack Visla
Estratto dai simboli dell’ELF linkato:
| Area | API disponibili |
|---|---|
| MQTT | sAPI_MqttStart · sAPI_MqttAccq · sAPI_MqttCfg · sAPI_MqttSslCfg · sAPI_MqttConnect · sAPI_MqttTopic · sAPI_MqttPayload · sAPI_MqttPub · sAPI_MqttConnLostCb |
| GNSS | sAPI_GnssPowerStatusSet · sAPI_GnssInfoGet · sAPI_GnssNmeaDataGet · sAPI_GnssStartMode (hot/warm/cold) · sAPI_AGPS |
| GPIO | sAPI_GpioSetValue · sAPI_GpioConfigInterrupt · sAPI_GpioWakeupEnable |
| Sistema | sAPI_SysGetImei · sAPI_SysGetIccid · sAPI_NetworkGetCsq · sAPI_NetworkGetCgreg · sAPI_TaskCreate |
L’API
sAPI_Mqtt*è il gemello esatto dei comandiAT+CMQTT*— stessa sequenza (Start → Accq → Cfg → Connect → Topic → Payload → Pub), ma chiamata in C dentro il modem invece che via UART. Il firmware A7670 MQTTS è quindi portabile quasi 1:1.
Il task tracker Visla
simcom_demo/demo_visla.c — attesa rete → IMEI → GNSS on → MQTT connect → publish periodico. L’IMEI è l’username MQTT, coerente con l’ACL visla/%u/* del broker:
sAPI_SysGetImei(gImei);
sprintf(gTopic, "visla/%s/position", gImei);
sAPI_GnssPowerStatusSet(SC_GNSS_POWER_ON);
sAPI_GnssNmeaDataGet(SC_GNSS_START_OUTPUT_NMEA_DATA, SC_GNSS_NMEA_DATA_GET_BY_URC);
sAPI_MqttStart(-1);
sAPI_MqttAccq(0, NULL, 0, gImei, 0, urc_mqtt_msgq_1);
sAPI_MqttConnect(0, NULL, 0, "tcp://mqtt.vislagps.com:1883", 60, 1, gImei, VISLA_MQTT_PASS);
Risultato del build:
link ✅ → objcopy ✅ → crc_set ✅ SUCCESS!! fileSize:0x29ddc crc:0xa9435240
build/customer_app.bin 171.492 byte
7e90b318 T sAPP_VislaTrackerDemo ← codice Visla dentro
7e90b13c t sTask_VislaTracker il firmware del modem
Header dell’immagine decodificabile a mano — size + CRC + entry point, che combacia con quello dell’ELF:
dc9d0200 → size 0x00029ddc 4052 43a9 → CRC 0xa9435240 a9b0907e → entry 0x7e90b0a9
⚠️ L’SDK non è pubblico (mia correzione)
Avevo affermato che A7672E_..._OPENSDK fosse un build target pubblico e pronto: era sbagliato. Il README dell’SDK dice esplicitamente che va richiesto al FAE SimCom. L’SDK usato è A011B02V02A7672M7_SDK_210812 (576 MB, 29 target, il nostro è A7672E_FASE_16M).
Come si builda su Mac (l’SDK è Windows-only)
L’SDK ha toolchain .exe, makefile CRLF e ricette CMD. Portato con port_to_linux.py (in test-moduli/a7672-sdk-official/) + Docker:
| Ostacolo Windows | Soluzione |
|---|---|
Makefile CRLF + path \ + $(subst /,\,…) | riscritti a POSIX dallo script (backup .winbak) |
Ricette CMD if not exist … (md …) | → @mkdir -p |
| Dir oggetto non create | → @mkdir -p $(sort $(dir $(OBJS))) |
arm-none-eabi-gcc.exe | toolchain Debian 12.2.1 (l’SDK ne porta una 7.3.1; le .a ARM in cross_tool.zip sono target, quindi riusabili su Linux) |
ld: -nodefaultlibs rifiutato | è un flag del driver gcc, non di ld → rimosso (ld non linka libs di default comunque). Il suggerimento “did you mean —nodefaultlibs?” è fuorviante: quel flag non esiste in ld. |
crc_set.exe (PE32+ x86-64) | ⭐ Wine in container --platform linux/amd64 + wrapper sh puntato da CRC_SET |
docker run --rm --platform linux/amd64 -v "$SDK":/sdk -w /sdk/sc_app debian:12-slim bash -c '
apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi make wine wine64
make -f Makefile TOP_DIR="/sdk/sc_app/" \
DFLAG+="-DSIMCOM_A7678_V1_02 -DBT_SUPPORT -DFEATURE_SIMCOM_GPS -DVISLA_TRACKER"'
🚧 Cosa manca ancora
- Flash sul modulo NON fatto → quindi “compila” ≠ “funziona”: il
.binnon è mai stato eseguito, e ildemo_visla.cè scritto sugli header senza aver mai visto i valori di ritorno dellesAPI_*a runtime.
🛑 Perché il flash è sconsigliato su questo modulo
Il tool c’è ed è seriale (sc_tool/aboot/adownload.exe), quindi non serve Windows/UTM: gira sotto Wine nativo su Mac, che mappa COM1 → /dev/cu.usbserial-* (Docker no: non ha accesso all’USB).
Usage: adownload -p COM1 -a -s 115200 aboot.zip # oppure -u (arom usb boot port)
Ma non flasha solo l’app. Vuole un pacchetto di release con partition.bin: arelease.exe impacchetta boot33.bin + cp.bin (5.9 MB, il core del modem) + rf.bin (calibrazione RF) + apn.bin + customer_app.bin → flash dell’immagine intera.
Firmware sul modulo (AT+CGMR) | A011B19A7672M7_F |
Firmware nell’SDK (cp.bin, ago 2021) | A011B02V02A7672M7 |
⚠️ B02 vs B19 → flashare = downgrade dell’intero firmware di ~5 anni. In più rf.bin può sovrascrivere la calibrazione RF di fabbrica con una generica: degrado RF silenzioso, peggio di un brick pulito perché il modulo sembra funzionare.
E l’SDK B19 non si può chiedere al FAE. Mail di Giulio Reina (Regional Sales Manager Italy, SimCom) del 30/06/2026:
“purtroppo non disponiamo nè dei FW nè degli SDK di questi A7670E che avete acquistato, trattandosi di moduli che produciamo per clienti cinesi, che non hanno quindi FW e certificazioni ufficiali per EMEA”
Il nostro A7672E viene dallo stesso canale (AliExpress) → stessa risposta attesa. E l’SDK A011B02V02 (2021) che abbiamo non arriva da SimCom: è stato recuperato online → ecco perché B02 vs B19.
Vie sensate:
- ⭐ Acquisto ufficiale — l’SDK è legato ad esso. Mail Giulio del 25/06: “possiamo fornirvi l’SDK per lo sviluppo della vostra applicazione sul nostro modulo invece che su una MCU esterna”. Ordine PDF a
SIMCOM WIRELESS HK LIMITED(Wanchai, HK) via Giulio, oppure PWM Italia (Mauro Cozzoni,m.cozzoni@pwmsemiconductors.com). Serve comunque: i moduli di canale cinese non hanno certificazioni EMEA → inutilizzabili in un prodotto venduto in EU. - Sacrificare un modulo di scorta per provare il flash B02 (solo curiosità tecnica: non porta a un prodotto).
- TLS: il demo usa
tcp://…:1883per il bring-up. Permqtt.vislagps.com:8883servesAPI_MqttSslCfg+ CA ISRG Root X1 caricata nel filesystem del modem (stessa CA del firmware A7670 MQTTS).
🚨 VERDETTO Wi-Fi DA RIFARE (16/07/2026) — la bocciatura del Wi-Fi Scan qui sotto è probabilmente sbagliata. Sull’EG915U-EU la stessa identica firma (1 AP @ −96) si è rivelata antenna 2.4 GHz mancante: ricollegata l’antenna e spento il BT → 9 AP @ −41…−86 dBm. Qui il risultato era
0-1 AP @ −90/−93= stessa firma. Da riprovare al banco con l’antenna 2.4 GHz collegata prima di considerare la feature assente.
⚠️ Gotchas dal banco (16/07/2026)
- ⭐ BT e Wi-Fi Scan condividono la radio 2.4 GHz: col BT acceso lo scan Wi-Fi trova 0 AP; spegnendo il BT (
AT+BTPOWER=0) torna a trovarne (1). Non si usano insieme. - ❌ Wi-Fi Scan inutilizzabile: anche col BT spento → 1 solo AP a −93 dBm (rumore), su 5 scansioni. Serve 3+ AP per triangolare → per il Wi-Fi positioning usare A7670E o EG800Q. Conferma la lezione dell’A7682E: “comando presente ≠ funziona”.
- Nomi comandi BT: è
AT+BTPOWER/AT+BTSCAN=<start>,<tipo>,<timeout>(tipo 1 = BLE) — NONAT+CBLEPWR/AT+BLESCAN=1(danno ERROR). - Alimentazione core board:
VINaccetta 5-16V (regolatore onboard) — molto più comodo del VBAT 3.4-4.2V. Servono solo VIN, GND, PEN, TXD, RXD. - La carrier è generica: monta
GPSANT+ANT_BT+ANT_4G1anche per varianti che non hanno quelle funzioni → la presenza del connettore non prova la feature. - Variante: l’annuncio mostrava
-LASE, il modulo reale è-FASE(con GNSS). Verificare sempre conATI.
🎯 Note per Visla
- ⭐ Antifurto: Jamming Detection di serie + BLE 5.0 opz → modem ideale per una versione anti-furto avanzata.
- ⚠️ Footprint 24×24 (famiglia A7670/SIM7070) → NON drop-in sul footprint 15.7×17.6 dell’A7683E. Linea separata.
- 🔥 Open-SDK ✅ dimostrato: firmware Visla compilato al banco (171 KB) — MQTT + GNSS + GPIO wakeup on-chip, niente MCU esterna. SDK da chiedere al FAE SimCom (non pubblico); build su Mac via Docker+Wine. Vedi SimCom A76XX OpenSDK.
- Vs A7683E: l’A7672 ha jamming+BLE+GNSS ma è più grande (24×24); l’A7683E è compatto (15.7×17.6) ma “liscio”.
⌨️ Comandi AT
Famiglia A76XX (V2.04) → vedi A7670E. Include BLE + GNSS + jamming.