V
Visla Hardware
Portal R&D
🔧 Bench tools & accessory ✓ Verified · 2026-07-17 🧪 Tested bench beacon nordic ble

Holyiot 25054 (nRF54L05)

Holyiot
📦 Dev board
€14.09
bench
⭐ nRF54L0**5** — il fratello PICCOLO del chip del Tag🔓 SWD aperto + backup (pad trovati col MULTIMETRO)⚠️ Firmware BOOTA senza fault, ma radio muta (HFXO?)📏 500KB flash / 96KB RAM — via di mezzo L15/52810
🛒 Ordine
Data ordine · 2026-06-21
Rif · AliExpress #3074783111333147
📑 Indice sezioni

Curiosity

Il beacon “ultra-sottile” col chip più piccolo della famiglia nRF54L: il nRF54L05. Stesso Cortex-M33 del nRF54L15 del Tag, ma meno memoria — il taglio economico. Tondo, con pulsante, accelerometro e (dal dump) driver SHT40. Serigrafia PCB: HOLYIOT-25054-V1.0, chip N54L05 QFAAB0 2524AA.

Al banco (17/07/2026): SWD aperto, firmware dumpato, board custom Zephyr creata, firmware Visla compilato e girante — ma la radio BLE non parte ancora (config da adattare, vedi sotto).

🛒 AliExpress — BLE 6.2 ultra-sottile con pulsante · €14.09

Specs

SoCNordic nRF54L05 (N54L05 QFAAB0) — Cortex-M33 + TrustZone
Flash / RAM500 KB / 96 KB (L15: 1.5M/256K · 52810: 192K/24K)
BLE6.0 / 6.2
AccelerometroLIS2DH (dal dump)
Pulsante✅ (visibile sul PCB)
AlimentazioneCR2032
Board Zephyr❌ nessuna ufficiale · SoC nrf54l05 supportato

🔍 I pad SWD: trovati col MULTIMETRO (non serigrafati)

Su questo “ultra-sottile” i pad non hanno etichette. Trovati per misura:

PadComeLettura
GNDcontinuità (🔔) col negativo della pila~0 Ω
VDDDC volt, pila inserita, nero su GND~3 V
DIO / CLKi due che restanoqualche kΩ verso VDD (pull-up interni)

DIO/CLK non serve distinguerli: se non connette, si scambiano (non danneggia nulla).

device nRF54L05_M33   ← ⚠️ NON nRF54L15! Col device sbagliato: VTref buono ma "no Core found"
Found SW-DP with ID 0x6BA02477     ← Cortex-M33
AP[0]: Core found                  ← APPROTECT non attivo

💾 Backup — backup/holyiot_25054_nrf54l05_stock.bin

512 KB letti · 219 KB non vuoti (42%)
reset: SP=0x20007DF0 PC=0x00002DF5
stringhe: 'clock@10e000' (Zephyr) · 'LIS2DH_Device_ID' · 'SHT4x Serial Number'

Stesse stringhe di TUTTI gli altri (dal 52810 al L05) → conferma definitiva: Holyiot usa UN firmware unico per l’intera famiglia, coi driver di ogni sensore compilati dentro e attivati a runtime. Backup su GitHub.

⚙️ Firmware Visla — compila e gira, radio DA FINIRE

Zephyr non ha la board holyiot_25054, ma il SoC nrf54l05 è supportato. Ho creato una board custom clonando holyiot_25008 e cambiando SoC L15→L05:

# board custom in boards/holyiot/holyiot_25054/ (SoC nrf54l05)
west build -p -b holyiot_25054/nrf54l05/cpuapp visla-beacon
FLASH: 124.344 B / 500 KB = 24%     RAM: 21.576 B / 96 KB = 22%

Esito: il firmware boota e gira senza errori — ma la radio resta muta.

Diagnosi al banco:

IPSR = 000 (NoException)      ← NON è in un fault handler
PC cambia tra le letture      ← il core AVANZA (non bloccato)
CycleCnt sale                 ← esegue codice normale

Non è un crash. Il firmware arriva in fondo, ma l’advertising non parte.

🔬 Prova decisiva: fallisce anche compilando per la board UFFICIALE Nordic nrf54l15dk/nrf54l05NON è la mia board clonata, è hardware-specifico di questo beacon.

🚧 Causa più probabile: l’HFXO (oscillatore ad alta frequenza) non parte — i condensatori di carico nel devicetree non corrispondono al cristallo montato da Holyiot. La CPU gira su un altro clock (quindi nessun fault), ma la radio senza HFXO non trasmette. Stessa classe del GND condiviso: codice giusto, accordatura RF della board sbagliata. → Serve il valore dei cap del cristallo (load-capacitance-femtofarad sul nodo hfxo) — bring-up RF della board, non un fix a tavolino.

📚 Ricerca: L15/L10/L05 differiscono solo per RAM e RRAM → il codice è portabile, il collo di bottiglia è la config RF della board.

🗂️ La famiglia beacon Holyiot — 5 modelli testati

ModelloChipFlash/RAMPulsanteBuzzerFirmware Visla
25008nRF54L151.5M/256K✅ campanello
25027nRF54L151.5M/256K✅ P1.06✅ trova-tag
21011nRF52810192K/24K
21014-BnRF52810192K/24K✅ (board Zephyr)
25054nRF54L05500K/96K⚠️ boota, HFXO da accordare

Cinque modelli, tre-quattro chip diversi, un solo sorgente firmware. Di fabbrica: tutti cloni (UUID FDA50693-..., Major 10011).

📖 Conferma dalla doc UFFICIALE Holyiot (app NexBeacon Pro)

Le immagini ufficiali del venditore confermano tutto il reverse engineering di oggi:

  • App = NexBeacon Pro (è il nome che i beacon trasmettono → li identifica)
  • UUID FDA50693-A4E2-4FB1-AFCF-C6EB07647825 / Major 10011 / Minor 19641 sono i DEFAULT dell’app → ecco perché tutti i 5 beacon erano cloni
  • Fino a 8 “slot” advertising, ognuno con frame type, ADV interval (step 100ms), RSSI@1m, trigger + durata
  • Frame type “Supported by Default”: Beacon, iBeacon, Eddystone (UID/URL/TLM/EID). “Requires hardware support”: Button, Temperature, T&H, Accelerometer, Barometer, RPM → conferma il “firmware unico, feature per-hardware”
  • Trigger Button con Double Press → broadcast 12s then stops: il firmware di serie sa già fare “premi → trasmetti”, via app. È esattamente ciò che facevamo noi in Zephyr — ma l’app non può ricevere (“trova il mio tag”), il nostro firmware sì.
  • Nell’advertising può mettere temp/umidità/accel X-Y-Z oltre a MAC+batteria.

Alternativa senza SWD: per molti casi d’uso l’app NexBeacon Pro basta (è in cinese, senza doc). Il nostro firmware serve per: UUID univoco anti-clone, ricezione (find-my-tag), e controllo totale.

🎯 Note per Visla

  • ⚠️ Non è il chip del Tag: il Tag di produzione è il nRF54L15** (1.5M flash). Questo è il L05, il taglio piccolo — buono per un beacon, non per il tracker.
  • 🔬 Da finire: accordare l’HFXO della board (cap del cristallo) → poi trasmette come gli altri quattro. Il firmware è già giusto (boota senza fault).
  • Lezione riusabile: i pad SWD non documentati si trovano col multimetro (GND per continuità, VDD per tensione). Metodo verificato su questa board.

🔗 Risorse