V
Visla Hardware
Portal R&D
📡 Modem cellulare ✓ Verified · 2026-07-16 📄 Datasheet HW Design R2 V1.04 + Open-SDK V1.04 (2026-03) 🧪 Tested bench

A7672E

SimCom
✅ BANCO: LTE + GNSS + BLE scan + SSL🔥 Firmware Visla COMPILATO (customer_app.bin 171 KB)⭐ Single-chip: sostituisce MCU + GPS + nRF⚠️ Wi-Fi Scan: verdetto DA RIFARE (era senza antenna)

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=1 e 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: SimCom A7xxx = 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)

ParametroA7672E (EU)A7672G (Global)
TechLTE Cat-1 (+2G GSM)Cat-1 + 2G + TDD
ChipsetASR1603ASR1603
Bande EUB1/B3/B5#/B7/B8/B20/B28#global (B1-B66 + TDD)
Jamming Detection● di serie✅ ●
BLE 5.0opz.NA
GNSSopz.NA
Wi-Fi Scanopz.
Sleep @LTE1.5 mA1.5 mA
VoLTE / FOTA
InterfacceUART·USB·I2C·ADC·Audio·LCD·Camera·GPIOidem
PackageLCC+LGA 24×24×2.4mmidem
CertCE-RED/GCF/Deutsche Telekom/BT/RCM/NCCCE-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
FunzioneEsitoProva al banco
LTE Cat-1+CPIN: READY, CSQ 19-29, 5 operatori IT visti
GNSSAT+CGNSSPWR=1+CGNSSPWR: READY!1,0,1. Nessun fix (serve antenna su GPSANT)
BT Classic + BLEREALEAT+BTPOWER=1 OK · +BTADDR: 14:00:20:9A:7D:6D · +BLEADDR: "14:00:20:9a:7d:6d"
⭐ BLE scanDIMOSTRATOAT+BTSCAN=1,1,20+BTSCAN: 0,1,S001,06:0A:FE:43:54:07,190device + RSSI, ripetibile (anche senza antenna BT)
SSL/TLSAT+CSSLCFG=? → sslversion/authmode/ignorelocaltime… (smentisce la recensione AliExpress “non supporta HTTPS”)
⭐ Open-SDKFIRMWARE COMPILATOSDK portato su Linux → customer_app.bin 171 KB con task tracker Visla dentro (sezione sotto)
Wi-Fi Scan⚠️ verdetto DA RIFARE0 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 trovareAT+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:

AreaAPI disponibili
MQTTsAPI_MqttStart · sAPI_MqttAccq · sAPI_MqttCfg · sAPI_MqttSslCfg · sAPI_MqttConnect · sAPI_MqttTopic · sAPI_MqttPayload · sAPI_MqttPub · sAPI_MqttConnLostCb
GNSSsAPI_GnssPowerStatusSet · sAPI_GnssInfoGet · sAPI_GnssNmeaDataGet · sAPI_GnssStartMode (hot/warm/cold) · sAPI_AGPS
GPIOsAPI_GpioSetValue · sAPI_GpioConfigInterrupt · sAPI_GpioWakeupEnable
SistemasAPI_SysGetImei · sAPI_SysGetIccid · sAPI_NetworkGetCsq · sAPI_NetworkGetCgreg · sAPI_TaskCreate

L’API sAPI_Mqtt* è il gemello esatto dei comandi AT+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 WindowsSoluzione
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.exetoolchain 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 ldrimosso (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 .bin non è mai stato eseguito, e il demo_visla.c è scritto sugli header senza aver mai visto i valori di ritorno delle sAPI_* 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.binflash 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:

  1. 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.
  2. Sacrificare un modulo di scorta per provare il flash B02 (solo curiosità tecnica: non porta a un prodotto).
  • TLS: il demo usa tcp://…:1883 per il bring-up. Per mqtt.vislagps.com:8883 serve sAPI_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) — NON AT+CBLEPWR / AT+BLESCAN=1 (danno ERROR).
  • Alimentazione core board: VIN accetta 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_4G1 anche 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 con ATI.

🎯 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.

🔗 Risorse