Curiosity
Alternativa premium a SimCom A7670E: LTE Cat-1 bis + GSM/GPRS, con feature enterprise — QuecOpen® (programmabile → single-chip), Bluetooth 4.2 LE+BR/EDR (opzionale), Wi-Fi Scan (opzionale) per geolocation indoor senza GPS, Dual (U)SIM + eSIM, audio/VoLTE, 3× UART. NO GNSS onboard (serve chip esterno).
⚠️ Correzione dati (12/07): il datasheet V1.8 dà idle 12.5 mA @ PF=64 (USB off), NON 1.6 mA — quest’ultimo è il LTE Sleep (PF=128). Quindi l’idle è simile all’A7670E, non “7× meglio” (errore precedente corretto). E BT/Wi-Fi sono opzionali: la SKU AC (C7471302) sulla scheda JLC non li dichiara → da confermare con Quectel.
Specs tecniche
| Parametro | Valore |
|---|---|
| Variant target EU | EG915U-EUAC-N05-SNNSA (JLC C7471302) |
| Tech | LTE Cat-1 bis + GSM/GPRS (2G fallback) |
| Bands LTE-FDD EU | B1/B3/B5/B7/B8/B20/B28 (+B5 vs A7670E) |
| Bands 2G EU | B2/B3/B5/B8 (850/900/1800/1900 MHz) |
| Throughput LTE | 10 Mbps DL / 5 Mbps UL |
| Throughput 2G | 85.6 Kbps DL/UL (EDGE) |
| TX peak | ~500 mA (PCL3 LTE) |
| Idle (PF=64, USB off) | 12.5 mA (≈ A7670E, NON 1.6) |
| Idle (PF=64, USB on) | 28.1 mA |
| LTE Sleep (PF=128) | 1.6 mA |
| LTE Sleep (PF=256) | 1.5 mA |
| Power off | 32 µA |
| Programmabile | ✅ QuecOpen® (SPI/LCM/Camera/SD) → single-chip |
| GNSS integrato | ❌ NO (serve chip esterno: MAX-M10S/SAM-M10Q/L76K) |
| Bluetooth | ⚠️ BT 4.2 (LE+BR/EDR) — OPZIONALE (SKU specifica) |
| Wi-Fi Scan | ⚠️ opzionale — 2.4 GHz 802.11b (Rx-only scan) |
| VoLTE | ✅ supportato |
| Audio codec | HR/FR/EFR/AMR/AMR-WB |
| Audio analog | 1 mic input + 1 ear output |
| Audio digital | PCM 1× |
| (U)SIM slot | 2× nativo (dual SIM hot-swap) |
| UART | 3× (vs A7670E 1×) |
| USB | 2.0 high-speed |
| SPI | 1× |
| ADC | 2× |
| I2C | 1× |
| Reset / PWRKEY | dedicated pins |
| Antenne richieste | 2× (main LTE + WiFi/BT) |
| Voltage | 3.3 - 4.3 V (typ 3.8 V) |
| Operating temp | -35°C / +75°C |
| Extended temp | -40°C / +85°C |
| Package | LGA · 23.6 × 19.9 × 2.4 mm (più compatto di SimCom 24×24!) |
| Cert EU | Deutsche Telekom + GCF + CE + RCM (AU/NZ) |
| AT command | Quectel proprietary + 3GPP TS 27.005/27.007 |
| Firmware update | DFOTA over-the-air |
| Drivers | Windows 7-11 RNDIS · Linux 2.6-5.18 · Android 4.x-12.x |
🆚 Confronto vs SimCom A7670E (per Visla)
| Feature | A7670E-LASE | EG915U-EU | Winner |
|---|---|---|---|
| GNSS integrato | ✅ L1 | ❌ | SimCom (-$6-10 BOM) |
| Bluetooth | ❌ | ✅ BT 4.2 | Quectel |
| Wi-Fi Scan (QuecLocator) | ❌ | ✅ | Quectel (indoor!) |
| Dual SIM | ❌ | ✅ 2× + eSIM | Quectel |
| UART | 1× | 3× | Quectel |
| Programmabile | Open-SDK | QuecOpen | pari |
| Idle (PF=64) | ~12-16 mA | 12.5 mA | pari (NON 7×) |
| Sleep | ~1.2 mA | 1.6 mA | SimCom |
| Power off | 8 µA | 32 µA | SimCom |
| Size | 24×24 | 23.6×19.9 | Quectel (-17%) |
| Cert EU | CE/RED | DT+GCF+CE+RCM | Quectel (più operator) |
| 2G fallback | LASE no, FASE sì | sì standard | Quectel |
| Prezzo (q. 1k) | ~$5-7 | ~$7-8 | SimCom |
| Bench Visla | ✅ testato | ✅ testato 16/07/2026 | pari |
| SDK single-chip | ⛔ negato per moduli canale cinese | ✅ QuecPython pubblico | Quectel |
🏆 Risultati banco Visla (16/07/2026) — testato
Core board PH-7 (38 pin, AliExpress ~€32 — la stessa carrier ospita anche BG95-M3 / EG912U-GL / EG916Q-GL), alimentata e collegata solo via USB-C, SIM 1NCE.
⭐ UART AT trovata (bench 22/07/2026): p35 = TXD, p43 = RXD, 115200 8N1. Corregge il “quale UART è la MAIN AT è ignoto” più sotto: è p35/p43 (le altre coppie tacciono a tutti i baud). Alimentata VBAT diretto @3.8V dal DPS (idle ~11 mA, coerente UNISOC). Quindi la board si pilota sia via USB-C+libusb sia via Waveshare su p35/p43 — utile quando serve il DPS per misurare i consumi (che l’USB-C in parallelo falserebbe).
↑ Config banco funzionante (rif. futuro): VBAT 3.8V su GND/BAT (rosso/nero in basso), UART p35=TXD / p43=RXD alla Waveshare 3.3V, antenna u.FL 2.4 GHz collegata.
❌ PSM — bench 22/07/2026: NON entra, ed è colpa del CHIP (test decisivo).
AT+CPSMS=1,,,"00100001","00000001"accettato, ma la corrente resta piatta a ~11 mA, nessun crollo a µA — testato su Vodafone IT E su WindTre forzato (AT+COPS=1,2,"22288", CSQ 31). Il test WindTre è dirimente: sullo stesso identico operatore l’EG800Q Qualcomm crollava a µA, questo EG915U UNISOC no → rimossa la variabile operatore, la differenza è il silicio/firmware UNISOC UIS8910. La fw non espone neanche il timer negoziato:AT+CEREG=4→CME ERROR: 53,AT+QPSMS?→CME ERROR: 58. Idle UNISOC ~11 mA vs Qualcomm 4.3 mA (~2.5×, coerente col fratello EG800K). (Residuo: DTR Waveshare potrebbe tenerlo sveglio — ma l’EG800Q scendeva con la stessa Waveshare attaccata.) → Verdetto low-power Cat-1 bis: EG800Q Qualcomm >> EG915U UNISOC. Wi-Fi scan ri-confermato via UART: 5 AP (BSSID+RSSI+canale,AT+QWIFISCAN) → posizione senza GPS ok su entrambi.
Identità reale (sempre verificata con ATI, mai fidarsi dell’annuncio):
ATI → Quectel EG915U · Revision: EG915UEUABR03A01M08 ← variante EU confermata
AT+QGMR → EG915UEUABR03A01M08_01.213.01.213
AT+CGSN → 866069069360525
AT+CPIN? → +CPIN: READY
AT+CSQ → 27,99 ← segnale ottimo
AT+COPS? → "vodafone IT",7 ← 7 = LTE, registrato al primo colpo
Dalla porta di trace USB è emerso anche il build del firmware: Jul 17 2024 18:09:33, %1.5 RLS W24.14.3, filesystem SFFS, e tracce pmu: psm magic.
⭐ Scoperta riusabile: AT via libusb, senza un filo (vale per tutti i Quectel su Mac)
macOS non crea nessun /dev/cu.* per questi moduli: le porte AT sono interfacce USB vendor-specific (classe 255), che Apple non aggancia (su Linux le prende option/qcserial). macOS aggancia solo la CDC ECM → compare una scheda di rete (en2/en3), non una seriale.
Ma proprio perché nessun kernel driver le occupa, si rivendicano con libusb → niente Waveshare, niente saldature, niente UART:
intf 0-1 → CDC ECM (rete) ← AppleUserECM
intf 2 → 0x84 IN / 0x02 OUT / 0x83 ← ✅ PORTA AT
intf 5-6 → trace/DIAG ← log interni del firmware in chiaro
intf 7, 8 → ✅ altre 2 PORTE AT
import usb.core, usb.util
d = usb.core.find(idVendor=0x2c7c) # 0x2c7c = Quectel (si presenta come "Android")
i = d.get_active_configuration()[(2, 0)] # intf 2 = porta AT
out = next(e for e in i if not e.bEndpointAddress & 0x80)
inp = next(e for e in i if e.bEndpointAddress & 0x80 and e.bmAttributes & 3 == 2)
usb.util.claim_interface(d, 2)
out.write(b"ATI\r\n"); print(inp.read(4096).tobytes().decode())
Script pronto: test-moduli/quectel-usb-at/qat.py. Il cablaggio UART non serve (ed è pure ambiguo: la board espone UART1/UART2/UART4/DBG e non è documentato quale sia la MAIN AT).
Esito funzioni
| Funzione | Esito | Prova al banco |
|---|---|---|
| LTE Cat-1 bis | ✅ | +CPIN: READY, CSQ 27, registrato Vodafone IT LTE senza forzature |
| AT via USB (libusb) | ✅ | 3 porte AT (intf 2/7/8) — zero fili |
| GNSS | ❌ assente | AT+QGPS=? → +CME ERROR: 58 → conferma il datasheet: serve GPS esterno |
| BT/BLE | ⚠️ radio reale, ma non usabile da AT | AT+QBTPWR=1 → OK · AT+QBTPWR? → 1 · AT+QBTNAME? → 0,"quec_bt_def". La radio è vera: col BT acceso il Wi-Fi scan va in ERROR (conflitto 2.4 GHz). Ma scan/addr/advertise/GATT non esistono: 12 nomi candidati provati (QBLESCAN, QBLEINIT, QBLEADDR, QBTINQ, QBTLESCAN, QBLEGATTSREG…) → tutti CME ERROR: 58; anche AT+CLAC assente. → il BLE si usa da QuecPython (libreria ble), non via AT |
| ⭐ Wi-Fi Scan | ✅ FUNZIONA (9 AP) | Con antenna 2.4 GHz collegata e BT spento: 8-9 AP a −41…−86 dBm su 3 scan (AT+QWIFISCAN=10000,1,30). Più che sufficienti per triangolare (servono 3+) → posizione senza GPS |
| PSM | ⚠️ da verificare | AT+QPSMS? → +CME ERROR: 58 — inatteso per un Cat-1 bis (le trace però citano pmu: psm magic) |
🚨 La lezione vera: era l’antenna, non la feature
Sequenza reale del banco — stesso modulo, stessi comandi, tre esiti:
| Condizione | Risultato |
|---|---|
| Senza antenna 2.4 GHz | 1 AP @ −96 dBm → sembra rotto |
| Antenna + BT acceso | ERROR → BT e Wi-Fi si contendono la radio 2.4 GHz |
| Antenna + BT spento | ✅ 8-9 AP @ −41…−86 dBm |
⚠️ Questo invalida (probabilmente) i verdetti Wi-Fi di A7682E e A7672E: erano 0-1 AP @ −90 e 1 AP @ −93 — la stessa identica firma del “senza antenna” qui. Su entrambi era stato concluso “il comando c’è ma non funziona”: conclusione da rifare al banco con l’antenna 2.4 GHz collegata. Tre moduli di tre vendor diversi con la stessa firma non erano tre feature rotte: era un errore di banco ripetuto.
✅ Confermato invece il gotcha cross-vendor: BT e Wi-Fi Scan non si usano insieme — identico su A7672E (SimCom) e qui (Quectel). Lì
0 AP, quiERROR.
🔥 QuecPython: la risposta al muro SimCom
L’EG915U è supportato da QuecPython, e a differenza dell’Open-SDK SimCom il firmware è pubblico e scaricabile senza FAE né acquisto ufficiale (python.quectel.com) — SimCom ci ha invece negato FW/SDK per i moduli di canale cinese (vedi A7672E). Tool: QPYcom.
✅ La via di ritorno ESISTE ed è ufficiale (≠ A7672E). Doc QuecPython:
“Standard AT firmware or QuecOpen firmware is usually downloaded into a module when the module leaves the factory. If you want to develop the module based on QuecPython, you need to manually re-download the dedicated QuecPython firmware into it. This process applies in reverse — to switch back from QuecPython OCPU_QPY firmware to standard AT firmware.”
| A7672E (SimCom) | EG915U (Quectel) | |
|---|---|---|
| SDK/firmware | ⛔ negato (moduli canale cinese) | ✅ pubblico |
| Cosa si flasha | immagine intera + rf.bin (calibrazione RF) | firmware modulo |
| Versione | downgrade B02 (2021) vs B19 attuale | stessa release |
| Tornare indietro | ❌ impossibile (tool write-only, nessun readback) | ✅ procedura ufficiale |
Firmware di questo banco: EG915UEUABR03A01M08 = AT di serie. Il QuecPython ha il suffisso _OCPU_QPY (sul forum, stessa board PH-7: EG915UEUABR03A20M08_OCPU_QPY).
✅ Firmware scaricato — i link sono pubblici, nessun login
Il portale è JS, ma l’elenco arriva da un endpoint WordPress interrogabile direttamente (admin-ajax.php, action get_download_list) e i file sono upload pubblici:
curl -s "https://developer.quectel.com/en/wp-admin/admin-ajax.php" \
-H "X-Requested-With: XMLHttpRequest" \
--data-urlencode "action=get_download_list" --data-urlencode "keywords=EG915U" \
--data-urlencode "page=1" --data-urlencode "page_num=40"
→ QPY_OCPU_V0006_EG915U_**EUAB**_FW.zip (22 MB) = la nostra variante. ⚠️ Solo i QPY_OCPU_* sono pubblici: il firmware AT di serie NON è scaricabile.
Contenuto (chipset Unisoc UIS8915DM, fw_name: UIX8910_MODEM):
.pac | Cosa scrive |
|---|---|
| app-only (940 KB) | solo APPIMG @ 0x60290000 ← sicuro, ma serve un modulo già convertito a QPY |
_merge.pac (5.9 MB) | AP + APPIMG + PS = cat1_UIS8915DM_BB_RF_SS_NoVolte_cus.img + NV (nvitem) + BOOTLOADER |
⚠️ La conversione AT → QPY richiede il merge.pac (serve l’AP build 8915DM_cat1_**open**) → tocca RF/PS e NV, e per giunta la PS è NoVolte. Stessa categoria di rischio dell’rf.bin A7672E.
⭐ AT+QDOWNLOAD: si entra in download mode senza ponticelli
Trovato con lo stesso metodo delle porte USB — guardare il codice d’errore:
AT+QFASTBOOT=? → +CME ERROR: 58 ← non esiste
AT+QDLMODE=? → +CME ERROR: 58 ← non esiste
AT+QDOWNLOAD=? → +CME ERROR: 4 ← ESISTE (rifiuta solo la forma "=?")
CME 58 = comando inesistente · CME 4 = comando esistente, sintassi non supportata.
Eseguendo AT+QDOWNLOAD il modulo si ri-enumera come 0525:a4a7 (CDC-ACM gadget, intf 0 classe 2 + intf 1 classe 10), muto agli AT. Il pad BOOT sulla PH-7 non è servito (e da solo non basta: viene letto solo all’accensione).
✅ La download mode NON è persistente: staccando/riattaccando l’USB-C il modulo torna da solo in AT, integro —
ATI, IMEI e registrazione LTE identici a prima. Verificato al banco: nessun byte scritto in flash.
🚫 spd_dump NON funziona qui (errore da non ripetere)
Ipotesi iniziale: “è Unisoc → spd_dump legge la flash → backup → flash sicuro”. Sbagliata.
spd_dump è per i telefoni Spreadtrum (SC6531, Tiger T310) e cerca 1782:4d00; la piattaforma qui è UIX8910 modem, che usa un downloader diverso. Provato: compilato per macOS (anche in modalità --tty), FDL estratti dal .pac con unpac (fdl1 base 0x8000c0, fdl2 0x810000) → send: unknown message / ver expected; handshake SPRD (0x7e) muto a 6 baud rate diversi.
→ Il backup della flash NON è possibile con tooling open-source. Il tool giusto è QPYcom (Windows → Wine/UTM), che però scrive e basta.
🎯 Verdetto: NON flashare questo modulo
Il flash AT→QPY tocca RF/NV senza rete di sicurezza. Rischieresti un modulo perfettamente funzionante per una prova. Meglio ordinare un modulo sacrificabile in più e flashare quello — stessa conclusione dell’A7672E.
Per Visla resta comunque il punto strategico: QuecPython è pubblico (SimCom ci ha negato l’SDK), quindi la strada single-chip Quectel è aperta — serve solo l’hardware giusto su cui provarla.
🧪 Note dal bench Visla
- ✅ Datasheet V1.1 letto 31/05/2026 — feature set verificate
- ✅ Quectel ha documentazione tipicamente migliore di SimCom (AT command reference più chiari, hardware design guide più dettagliato)
- ✅ Supporto enterprise EU: Quectel ha uffici Italia/Germania, supporto più reattivo
- ⚠️ NO GNSS = aggiungere ~$6-10 BOM per chip GPS dedicato
- ⚠️ Comandi AT diversi: codice scritto per A7670E richiede adattamento (sintassi diversa per PSM, GNSS comandi, audio, ecc.)
- ⚠️ 2 antenne richieste (main + WiFi/BT) — più ingombro PCB vs SimCom 1 antenna
🎯 Use case Visla raccomandati
Visla v2 STANDARD asset tracker
→ A7670E-LASE rimane: GPS integrato + più economico + già testato
Visla v2 AUTO single-chip (always-on)
→ EG915U-EU candidato: QuecOpen (single-chip) + BT opz. + WiFi-scan indoor + dual-SIM
- Un chip invece di A7670E+MCU (risparmio ~$1-3 + PCB più piccolo)
- Geolocation indoor via Wi-Fi dove il GPS fallisce
- ⚠️ Idle 12.5 mA = come A7670E (NON 7× meglio, errore corretto) → non è un vantaggio consumo
- ⚠️ BT opzionale (verifica SKU) e BLE “di servizio” (non Nordic/Channel Sounding) → per BLE serio serve comunque il Nordic
- Per il Tag µA resta fuori: 12.5 mA idle troppo alto
Visla v2 AUTO Fleet rural
→ EG915U-EU vince: 2G fallback built-in + dual SIM failover + BT diagnostica
- Dual SIM = operator failover automatico (Iliad principale, Vodafone backup)
- BT = OBD-II diagnostico bluetooth se serve future
⚠️ Gotchas
- Naming Quectel convoluto: EG915U-EUAC-N05-SNNSA → ogni suffix significa feature/cert specifico
- Bluetooth e Wi-Fi sono opzionali: verifica che la variant AC abbia entrambi attivi (non sempre)
- Gerarchia consumi datasheet: Power off 32 µA · Sleep 1.6 mA (PF=128) · Idle 12.5 mA (PF=64). NON confondere sleep (1.6 mA) con idle (12.5 mA) — errore ricorrente. PSM reale non documentato chiaramente → testare al bench
- 2G fallback “wide” copertura ma 2G in EU in dismissione (Vodafone IT EOL 2025-2027)
- Codice AT scritto per A7670E NON portabile direttamente, richiede driver Quectel-specific
- Antenna count = 2 (LTE + WiFi/BT) — se non usi BT/WiFi puoi terminare con 50Ω dummy
- LGA package = no manual rework facile (vs LCC del SimCom)
- VoLTE richiede SIM con piano voce (non tutte le SIM IoT supportano)