wM-Bus fejlfinding — ingen signal, krypteret og forkert driver
Systematisk fejlfinding ved wM-Bus reception: ingen telegrammer, krypterede frames, forkert mode, driver-fejl, RSSI-problemer og løsninger trin for trin.
Af M-Bus Gateway
wM-Bus-reception fejler typisk af ét af fem årsager: forkert mode, manglende AES-nøgle, ringe signal, forkert driver eller hardware-problem. Her er den systematiske fejlfindingsguide.
Trin 1: Verificer at gateway modtager noget
# Kør wmbusmeters direkte og kig om der overhovedet modtages:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | head -50
# Forventede output (OK):
# 2026-05-23T10:15:32.123Z (12345678) T1 rssi=-78
# 2026-05-23T10:15:33.456Z (87654321) C1 rssi=-91
# Intet output → Gå til Hardware-tjek
# Output men ingen kendte målere → Gå til Trin 2
Hardware-tjek (USB-dongle)
# Verificer at dongle er registreret:
lsusb | grep "Würth\|WEH\|10C4\|1A86"
# Forventet: "Silicon Labs CP2104 USB to UART"
# Verificer symlink:
ls -la /dev/wmbus
# Skal vise: /dev/wmbus -> /dev/ttyUSB0
# Mangler symlink? Tjek udev-regel:
cat /etc/udev/rules.d/99-wmbus.rules
# Forventet:
# SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="wmbus"
# Genindlæs udev-regler:
udevadm control --reload-rules && udevadm trigger
# Tjek at mbus-bruger er i dialout-gruppen:
groups mbus | grep dialout
Trin 2: Identificer mode (C1 vs T1)
Mange målere sender kun på ét mode. Prøv begge:
# Test C1:
timeout 30 wmbusmeters --listento=c1 /dev/wmbus NOKEY 2>&1
echo "C1 telegrams: $(timeout 30 wmbusmeters --listento=c1 /dev/wmbus NOKEY 2>&1 | wc -l)"
# Test T1:
timeout 30 wmbusmeters --listento=t1 /dev/wmbus NOKEY 2>&1
echo "T1 telegrams: $(timeout 30 wmbusmeters --listento=t1 /dev/wmbus NOKEY 2>&1 | wc -l)"
# Typiske resultater:
# Engelmann SensoStar: Kun C1
# Techem HCA type 5/6: Kun T1
# Kamstrup: C1 (primær) + T1 (backup)
# Danfoss Ally: T1
Trin 3: AES-krypterede telegrammer
# Identificer krypterede frames (NOKEY viser "not decryptable"):
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep -i "encrypt\|aes\|not decrypt"
# Forventet output ved krypteret måler:
# {"media":"heat_cost_allocator","meter":"unknown","id":"12345678",
# "status":"not decryptable","..."}
# Løsning 1: Tilføj AES-nøgle direkte i test:
wmbusmeters --listento=c1 /dev/wmbus 12345678 MANUFACTURER_KEY 2>&1
# → AES-nøglen er 32 hex-tegn (16 bytes)
# Løsning 2: Konfigurationsfil med nøgle:
cat > /etc/wmbusmeters.d/hca_lej3.conf << EOF
name=lej3_stue
type=sensostar
id=12345678
key=A1B2C3D4E5F6789012345678ABCDEF01
EOF
Hent AES-nøgle: Se AES-nøgle guide.
Trin 4: Forkert driver (fabrikat ukendt)
# Se hvad wmbusmeters genkender:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep '"meter"'
# Ukendt fabrikat:
# {"meter":"unknown","id":"AABBCCDD","mfct":"XYZ",...}
# Find FAB ID:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep '"mfct"'
# → "mfct":"TCH" = Techem
# → "mfct":"KAM" = Kamstrup
# → "mfct":"ELS" = Elster
# → "mfct":"APT" = Brunata/Apator
# Se liste over alle drivers:
wmbusmeters --listmeters | grep -i "hca\|heat_cost"
Driver-tabel for HCA:
| FAB ID | Fabrikat | Driver |
|---|---|---|
| TCH | Techem | teca (type 5/6) eller techem_hca_typ8 (type 8) |
| APT | Brunata/Apator | apator162 |
| ENG | Engelmann | sensostar |
| DAN | Danfoss | danfoss_ally |
| QDS | Qundis | q_caloric |
| SON | Sontex | supercom_587 |
| HIK | Hourly | auto |
Trin 5: RSSI-problemer
# Se RSSI pr. måler:
wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>&1 | grep -o '"rssi_dbm":[^,}]*'
# Typiske værdier:
# -60 til -80 dBm: Fremragende
# -80 til -95 dBm: God
# -95 til -105 dBm: Marginal — overvej repeater
# < -105 dBm: Dårlig — måler ses sporadisk eller slet ikke
Løsninger ved dårligt signal:
| Problem | Løsning |
|---|---|
| Måler bag metalskab | Flyt gateway 1 etage op |
| Betonvæg (> 30 cm) | Installer repeater halvvejs |
| Lang afstand (> 20 m) | wM-Bus repeater (OMS Annex B) |
| RF-interferens | Flyt væk fra WiFi-router / andre 868 MHz enheder |
Trin 6: Wmbusmeters konfiguration og log
# Kør med verbose logging:
wmbusmeters --debug --listento=c1 /dev/wmbus NOKEY 2>&1 | head -100
# Typiske fejl i log:
# "Could not open /dev/wmbus: Permission denied"
# → Bruger ikke i dialout-gruppen: usermod -aG dialout mbus
# "Failed to set baud rate"
# → Forkert USB-dongle eller kabel-problem
# "Unexpected message format"
# → Proprietær protokol (ikke OMS) — kontakt fabrikant
Trin 7: Systematisk test-script
#!/bin/bash
# /opt/mbus/test_wmbus.sh — kør som mbus-bruger
echo "=== wM-Bus Diagnostik ==="
echo "1. Hardware:"
lsusb | grep -i "10c4\|1a86\|wmbus" || echo "FEJL: USB-dongle ikke fundet"
ls /dev/wmbus 2>/dev/null || echo "FEJL: /dev/wmbus mangler"
echo "2. C1-scan (30 sek):"
C1_COUNT=$(timeout 30 wmbusmeters --listento=c1 /dev/wmbus NOKEY 2>/dev/null | wc -l)
echo " C1-telegrammer modtaget: $C1_COUNT"
echo "3. T1-scan (30 sek):"
T1_COUNT=$(timeout 30 wmbusmeters --listento=t1 /dev/wmbus NOKEY 2>/dev/null | wc -l)
echo " T1-telegrammer modtaget: $T1_COUNT"
echo "4. Krypterede:"
ENCRYPTED=$(timeout 30 wmbusmeters --listento=c1,t1 /dev/wmbus NOKEY 2>/dev/null | grep -c "not decrypt")
echo " Krypterede målere (mangler AES-nøgle): $ENCRYPTED"
echo "=== Klar ==="
Konklusion
wM-Bus-fejlfinding er systematisk: hardware → mode → AES → driver → RSSI. De hyppigste årsager er forkert mode (C1 vs T1) og manglende AES-nøgle til krypterede HCA'er. Platformen viser i realtid hvilke målere der er set men ikke dekrypteret — og giver besked hvis dækning falder under 80%.