V
Visla Hardware
Portal R&D
📡 Modem cellulare ✓ Verified · 2026-07-16 📄 Datasheet Datasheet V1.8 (riconfermato Visla) 🧪 Tested bench

EG915U-EU

Quectel
🏭 Chip @ 1k pcs
€8.05
production BOM
🔧 Chip @ 1 pc
€12.01
prototyping JLC
0
✅ BANCO: LTE Vodafone IT al primo colpo (CSQ 27)⭐ AT via libusb su Mac — zero fili, niente /dev/cu❌ No GNSS · Wi-Fi scan 1 AP @ −96 (inutilizzabile)🔥 QuecPython PUBBLICO (a differenza di SimCom)

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

ParametroValore
Variant target EUEG915U-EUAC-N05-SNNSA (JLC C7471302)
TechLTE Cat-1 bis + GSM/GPRS (2G fallback)
Bands LTE-FDD EUB1/B3/B5/B7/B8/B20/B28 (+B5 vs A7670E)
Bands 2G EUB2/B3/B5/B8 (850/900/1800/1900 MHz)
Throughput LTE10 Mbps DL / 5 Mbps UL
Throughput 2G85.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 off32 µA
ProgrammabileQuecOpen® (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 codecHR/FR/EFR/AMR/AMR-WB
Audio analog1 mic input + 1 ear output
Audio digitalPCM 1×
(U)SIM slot2× nativo (dual SIM hot-swap)
UART (vs A7670E 1×)
USB2.0 high-speed
SPI
ADC
I2C
Reset / PWRKEYdedicated pins
Antenne richieste2× (main LTE + WiFi/BT)
Voltage3.3 - 4.3 V (typ 3.8 V)
Operating temp-35°C / +75°C
Extended temp-40°C / +85°C
PackageLGA · 23.6 × 19.9 × 2.4 mm (più compatto di SimCom 24×24!)
Cert EUDeutsche Telekom + GCF + CE + RCM (AU/NZ)
AT commandQuectel proprietary + 3GPP TS 27.005/27.007
Firmware updateDFOTA over-the-air
DriversWindows 7-11 RNDIS · Linux 2.6-5.18 · Android 4.x-12.x

🆚 Confronto vs SimCom A7670E (per Visla)

FeatureA7670E-LASEEG915U-EUWinner
GNSS integrato✅ L1SimCom (-$6-10 BOM)
Bluetooth✅ BT 4.2Quectel
Wi-Fi Scan (QuecLocator)Quectel (indoor!)
Dual SIM✅ 2× + eSIMQuectel
UARTQuectel
ProgrammabileOpen-SDKQuecOpenpari
Idle (PF=64)~12-16 mA12.5 mApari (NON 7×)
Sleep~1.2 mA1.6 mASimCom
Power off8 µA32 µASimCom
Size24×2423.6×19.9Quectel (-17%)
Cert EUCE/REDDT+GCF+CE+RCMQuectel (più operator)
2G fallbackLASE no, FASE sìsì standardQuectel
Prezzo (q. 1k)~$5-7~$7-8SimCom
Bench Visla✅ testatotestato 16/07/2026pari
SDK single-chipnegato per moduli canale cineseQuecPython pubblicoQuectel

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

Quectel EG915U-EU su core board PH-7 (38 pin, USB-C)

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: PH-7 alimentata VBAT 3.8V (GND/BAT rosso-nero) + UART p35(TXD)/p43(RXD) alla Waveshare

↑ 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=4CME 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

FunzioneEsitoProva 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
GNSSassenteAT+QGPS=?+CME ERROR: 58conferma il datasheet: serve GPS esterno
BT/BLE⚠️ radio reale, ma non usabile da ATAT+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 ScanFUNZIONA (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 verificareAT+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:

CondizioneRisultato
Senza antenna 2.4 GHz1 AP @ −96 dBm → sembra rotto
Antenna + BT accesoERROR → BT e Wi-Fi si contendono la radio 2.4 GHz
Antenna + BT spento8-9 AP @ −41…−86 dBm

⚠️ Questo invalida (probabilmente) i verdetti Wi-Fi di A7682E e A7672E: erano 0-1 AP @ −90 e 1 AP @ −93la 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, qui ERROR.

🔥 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/firmwarenegato (moduli canale cinese)pubblico
Cosa si flashaimmagine intera + rf.bin (calibrazione RF)firmware modulo
Versionedowngrade B02 (2021) vs B19 attualestessa release
Tornare indietroimpossibile (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).

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):

.pacCosa 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)

🔗 Risorse