VANTHUAN
(VAN THUAN)
October 29, 2025, 1:23pm
1
Bonjour,
I’m trying to retrieve information from an Orion XS 50 via BLE with an WaveShare ESP32 S3 touch 5 inches— specifically, the output current in amps. In the “Extra manufacturer data” document, within the table for DC/DC devices, this value isn’t listed — only the input or output voltage. Do you know if an updated version of this document exists (I haven’t been able to find one), or if you happen to know the data format used by the Orion?
At the moment, thanks to this document, I’m able to retrieve data from a SmartBMV and a SmartSolar, but not from an Orion.
Merci !
FXVT
thiemovanengelen
(Thiemo van Engelen (Victron Energy staff))
October 31, 2025, 8:23am
2
Hi,
The OrionXS has a different Instant Readout record than the previous SmartOrions. The record definition for the OrionXS is:
|Start bit|Nr of bits|Meaning |Units |Range |NA value|
|---------|----------|-------------------|------|-------------------|--------|
| 0 | 8 | Device state | | 0 .. 0xFF| |
| 8 | 8 | Error code | | 0 .. 0xFE| |
| 16 | 16 | Output voltage |0.01 V|-327.68 .. 327.66 V| 0x7FFF|
| 32 | 16 | Output current | 0.1 A|-3276.8 .. 3276.6 A| 0x7FFF|
| 48 | 16 | Input voltage |0.01 V| 0 .. 655.34 V| 0xFFFF|
| 64 | 16 | Input current | 0.1 A| 0 .. 6553.4 A| 0xFFFF|
| 80 | 32 | Device Off reason | | 0 .. 429496728| |
| 112 | 16 | Unused | | | |
With kind regards,
Thiemo van Engelen
VANTHUAN
(VAN THUAN)
October 31, 2025, 8:57am
3
Bonjour,
Thank you, Thiemo, for your quick and precise reply.
In the meantime, I looked more carefully through the Victron Community forum and found the same table you mentioned (discussion “Orion XS 12V/12V-50A Bluetooth Advertising Data” with William Christian Bonner / WCBonner and Bruno / bmedici — https://community.victronenergy.com/t/orion-xs-12v-12v-50a-bluetooth-advertising-data/2183/7 ).
So, Smart Orion and Orion XS are indeed different!
Now I understand why the two documents — “Extra Manufacturer Data” and your table — provide completely different information.
I also found a similar table for the AC chargers. I’ll try to see what data I can retrieve from my IP22.
Best Regards.
François-Xavier
VANTHUAN
(VAN THUAN)
October 31, 2025, 9:40am
4
Bonjour again,
Can a Victron device broadcast two different product codes (“Record Type”) in its Bluetooth advertising data?
I’m using this code to identify each device type and select the proper data decoding method. However, when I ran a small program to scan the Record Types from the four devices we have onboard, I got the following results:
Is it normal for a device to sometimes send a code different from its “official” Record Type (e.g., 0x01, 0x02, 0x0F)?
Occasionally, the IP22 charger even returns a Record Type of 0x00 , which appears to be a test record containing almost all zero data fields:
14:25:15.500 → ========================================
14:25:15.500 → ✓ APPAREIL VICTRON DÉTECTÉ
14:25:15.500 → ========================================
14:25:15.500 → Nom: BSC IP22 12/30…HQ2437PRJV3
14:25:15.500 → Adresse MAC: fb:82:24:5d:bb:27
14:25:15.500 → Code Produit: 0x0 (Test Record)
14:25:15.500 → Clé (byte 0): 0x0
14:25:15.500 → Beacon Type: 0x10
14:25:15.500 → Nonce Counter: 0
14:25:15.500 → Taille données: 23 bytes
14:25:15.500 → Données brutes: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
14:25:15.500 → RSSI: -88 dBm
14:25:15.500 → ========================================
Best Regards
thiemovanengelen
(Thiemo van Engelen (Victron Energy staff))
October 31, 2025, 12:46pm
5
Hi,
Normally a device only sends 1 type of instant readout record. What is probably happening here is that there are devices configured for VE.Smart networking. This will lead to completely different types of messages besides the product announcement / instant readout messages. So for Instant Readout it is important that the 3th byte is 0x10. Any other value there means it is not a product announcement message and thus does not contain instant readout data.
The data above also does not really look like instant readout data so no idea what is going on there.
With kind regards,
Thiemo van Engelen
VANTHUAN
(VAN THUAN)
November 10, 2025, 10:27am
6
Thank you Thiemo,
It’s still stuck!
I’m working on a C++ application to retrieve data from 4 Victron devices. It works for the BMV712 and the SmartSolar, however I can’t get the basic informations from the IP22 charger and the Orion XS.
For the IP22 and Orion XS, I can’t even get type 0x10 records, nor their Product Code (0x08, 0x0F) or the first byte of the encryption key.
To help myself, I wrote a small program just to study the basic informations, before going further to retrieve the “real” data (Voltage, Amperage…)
Here is the small program and the trace it produces.
The method is the same for all 4 devices, but it only works for 2 of them.
Am I making a mistake? Is the encoding used by each device different?
Thank you for your help.
Context: C++, Arduino IDE, Waveshare ESP32 S3 with 5" LCD touchscreen
// ========================================
// Victron BLE Scanner - Device Identification
// Displays product code (0xXX) and key for each device
// ========================================
#include <BLEDevice.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
BLEScan *pBLEScan;
int scanTime = 3; // Scan duration in seconds
// Victron header structure
typedef struct {
uint16_t vendorID; // Should be 0x02e1 for Victron
uint8_t beaconType; // 0x10 = Product Advertisement
uint8_t unknownData1[3];
uint8_t victronRecordType; // Product code (0x01, 0x02, 0x04, 0x08, 0x0F...)
uint16_t nonceDataCounter;
uint8_t encryptKeyMatch; // First byte of encryption key
uint8_t victronEncryptedData[21];
uint8_t nullPad;
} __attribute__((packed)) victronManufacturerData;
// Known product names
const char* getProductName(uint8_t recordType) {
switch(recordType) {
case 0x00: return "Test Record";
case 0x01: return "Solar Charger";
case 0x02: return "Battery Monitor (BMV)";
case 0x03: return "Inverter";
case 0x04: return "DC/DC Converter";
case 0x05: return "SmartLithium";
case 0x06: return "Inverter RS";
case 0x07: return "GX-Device";
case 0x08: return "AC Charger";
case 0x09: return "Smart Battery Protect";
case 0x0A: return "Lynx Smart BMS";
case 0x0B: return "Multi RS";
case 0x0C: return "VE.Bus";
case 0x0D: return "DC Energy Meter";
case 0x0E: return "Orion XS ??"; // Possible code for Orion XS
case 0x0F: return "Orion XS / Unknown"; // Possible code
default: return "Unknown Product";
}
}
// BLE Callback
class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
if (!advertisedDevice.haveManufacturerData()) {
return; // No manufacturer data available, exiting...
}
String manData = advertisedDevice.getManufacturerData();
int manDataSize = manData.length();
uint8_t manCharBuf[32];
manData.toCharArray((char *)manCharBuf, manDataSize + 1);
victronManufacturerData *vicData = (victronManufacturerData *)manCharBuf;
// Check if it's Victron
if (vicData->vendorID != 0x02e1) {
return; // Device found is not Victron, exiting...
}
// DISPLAY INFORMATION
Serial.println("========================================");
Serial.println("✓ VICTRON DEVICE DETECTED");
Serial.println("========================================");
// Device name (if available)
if (advertisedDevice.haveName()) {
Serial.print("Name: ");
Serial.println(advertisedDevice.getName().c_str());
} else {
Serial.println("Name: (not available)");
}
// MAC Address
Serial.print("MAC Address: ");
Serial.println(advertisedDevice.getAddress().toString().c_str());
// Product code
Serial.print("Product Code: 0x");
Serial.print(vicData->victronRecordType, HEX);
Serial.print(" (");
Serial.print(getProductName(vicData->victronRecordType));
Serial.println(")");
// First byte of encryption key
Serial.print("Key (byte 0): 0x");
Serial.println(vicData->encryptKeyMatch, HEX);
// Beacon Type
Serial.print("Beacon Type: 0x");
Serial.println(vicData->beaconType, HEX);
// Nonce counter
Serial.print("Nonce Counter: ");
Serial.println(vicData->nonceDataCounter);
// Data size
Serial.print("Data size: ");
Serial.print(manDataSize);
Serial.println(" bytes");
// Raw manufacturer data (hex)
Serial.print("Raw data: ");
for (int i = 0; i < manDataSize && i < 32; i++) {
if (manCharBuf[i] < 16) Serial.print("0");
Serial.print(manCharBuf[i], HEX);
Serial.print(" ");
}
Serial.println();
// RSSI (signal strength)
Serial.print("RSSI: ");
Serial.print(advertisedDevice.getRSSI());
Serial.println(" dBm");
Serial.println("========================================");
Serial.println();
}
};
void setup() {
Serial.begin(115200);
delay(2000);
Serial.println();
Serial.println("========================================");
Serial.println(" VICTRON BLE SCANNER");
Serial.println(" Device Identification");
Serial.println("========================================");
Serial.println();
Serial.println("This program scans for Victron devices");
Serial.println("and displays their product code + key.");
Serial.println();
Serial.println("Searching...");
Serial.println();
// BLE Initialization
BLEDevice::init("");
pBLEScan = BLEDevice::getScan();
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true);
pBLEScan->setInterval(100);
pBLEScan->setWindow(99);
Serial.println("BLE initialized - Scanning...");
Serial.println();
}
void loop() {
// Scan for 3 seconds
BLEScanResults* foundDevices = pBLEScan->start(scanTime, false);
// Display number of devices found
int deviceCount = foundDevices->getCount();
Serial.print("--- Scan completed (");
Serial.print(deviceCount);
Serial.println(" BLE devices detected) ---");
Serial.println();
// Clean results
pBLEScan->clearResults();
// Pause before next scan
delay(2000);
}
Trace:
11:16:46.928 ->
11:16:46.928 -> ========================================
11:16:47.163 -> VICTRON BLE SCANNER
11:16:47.163 -> Device Identification
11:16:47.163 -> ========================================
11:16:47.163 ->
11:16:47.163 -> This program scans for Victron devices
11:16:47.163 -> and displays their product code + key.
11:16:47.163 ->
11:16:47.163 -> Searching...
11:16:47.163 ->
11:16:47.163 -> BLE initialized - Scanning...
11:16:47.163 ->
11:16:47.163 -> ========================================
11:16:47.163 -> ✓ VICTRON DEVICE DETECTED
11:16:47.163 -> ========================================
11:16:47.163 -> Name: (not available)
11:16:47.163 -> MAC Address: fb:c1:a3:08:4e:8c
11:16:47.163 -> Product Code: 0x7F (Unknown Product)
11:16:47.163 -> Key (byte 0): 0xB5
11:16:47.163 -> Beacon Type: 0x2
11:16:47.163 -> Nonce Counter: 38044
11:16:47.163 -> Data size: 24 bytes
11:16:47.163 -> Raw data: E1 02 02 0A C7 1A 7F 9C 94 B5 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:47.210 -> RSSI: -72 dBm
11:16:47.210 -> ========================================
11:16:47.210 ->
11:16:47.210 -> ========================================
11:16:47.210 -> ✓ VICTRON DEVICE DETECTED
11:16:47.210 -> ========================================
11:16:47.210 -> Name: (not available)
11:16:47.210 -> MAC Address: fb:c1:a3:08:4e:8c
11:16:47.210 -> Product Code: 0x0 (Test Record)
11:16:47.210 -> Key (byte 0): 0x0
11:16:47.210 -> Beacon Type: 0x10
11:16:47.210 -> Nonce Counter: 0
11:16:47.210 -> Data size: 24 bytes
11:16:47.210 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:47.210 -> RSSI: -77 dBm
11:16:47.210 -> ========================================
11:16:47.210 ->
11:16:47.210 -> ========================================
11:16:47.210 -> ✓ VICTRON DEVICE DETECTED
11:16:47.210 -> ========================================
11:16:47.210 -> Name: Orion XS HQ2443F7747
11:16:47.210 -> MAC Address: fb:c1:a3:08:4e:8c
11:16:47.210 -> Product Code: 0x0 (Test Record)
11:16:47.210 -> Key (byte 0): 0x0
11:16:47.210 -> Beacon Type: 0x10
11:16:47.210 -> Nonce Counter: 0
11:16:47.210 -> Data size: 24 bytes
11:16:47.210 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:47.210 -> RSSI: -77 dBm
11:16:47.210 -> ========================================
11:16:47.210 ->
11:16:47.210 -> ========================================
11:16:47.210 -> ✓ VICTRON DEVICE DETECTED
11:16:47.210 -> ========================================
11:16:47.210 -> Name: (not available)
11:16:47.210 -> MAC Address: f3:81:dc:56:9f:97
11:16:47.210 -> Product Code: 0x13 (Unknown Product)
11:16:47.210 -> Key (byte 0): 0x85
11:16:47.210 -> Beacon Type: 0x2
11:16:47.210 -> Nonce Counter: 64408
11:16:47.210 -> Data size: 24 bytes
11:16:47.210 -> Raw data: E1 02 02 0A F8 C5 13 98 FB 85 11 11 FE 48 A1 FD E2 0B DA 39 0C 4A BF DC
11:16:47.210 -> RSSI: -86 dBm
11:16:47.210 -> ========================================
11:16:47.210 ->
11:16:47.210 -> ========================================
11:16:47.210 -> ✓ VICTRON DEVICE DETECTED
11:16:47.210 -> ========================================
11:16:47.210 -> Name: (not available)
11:16:47.210 -> MAC Address: f3:81:dc:56:9f:97
11:16:47.210 -> Product Code: 0x1 (Solar Charger)
11:16:47.210 -> Key (byte 0): 0x4B
11:16:47.210 -> Beacon Type: 0x10
11:16:47.210 -> Nonce Counter: 57842
11:16:47.210 -> Data size: 22 bytes
11:16:47.210 -> Raw data: E1 02 10 02 56 A0 01 F2 E1 4B 4E D1 9A 80 E5 18 CC 1F CE 21 2C FE
11:16:47.210 -> RSSI: -85 dBm
11:16:47.210 -> ========================================
11:16:47.210 ->
11:16:47.210 -> ========================================
11:16:47.210 -> ✓ VICTRON DEVICE DETECTED
11:16:47.210 -> ========================================
11:16:47.210 -> Name: SmartSolar HQ22417222G
11:16:47.210 -> MAC Address: f3:81:dc:56:9f:97
11:16:47.210 -> Product Code: 0x1 (Solar Charger)
11:16:47.210 -> Key (byte 0): 0x4B
11:16:47.210 -> Beacon Type: 0x10
11:16:47.210 -> Nonce Counter: 57842
11:16:47.210 -> Data size: 22 bytes
11:16:47.210 -> Raw data: E1 02 10 02 56 A0 01 F2 E1 4B 4E D1 9A 80 E5 18 CC 1F CE 21 2C FE
11:16:47.210 -> RSSI: -86 dBm
11:16:47.210 -> ========================================
11:16:47.210 ->
11:16:47.210 -> ========================================
11:16:47.210 -> ✓ VICTRON DEVICE DETECTED
11:16:47.210 -> ========================================
11:16:47.210 -> Name: (not available)
11:16:47.210 -> MAC Address: c5:1d:ac:ed:91:92
11:16:47.210 -> Product Code: 0xD5 (Unknown Product)
11:16:47.210 -> Key (byte 0): 0x82
11:16:47.210 -> Beacon Type: 0x2
11:16:47.210 -> Nonce Counter: 53146
11:16:47.210 -> Data size: 24 bytes
11:16:47.210 -> Raw data: E1 02 02 0A B2 FF D5 9A CF 82 42 0E 7E BB 31 B0 6B C3 B3 69 06 D1 35 04
11:16:47.210 -> RSSI: -68 dBm
11:16:47.210 -> ========================================
11:16:47.210 ->
11:16:47.304 -> ========================================
11:16:47.304 -> ✓ VICTRON DEVICE DETECTED
11:16:47.304 -> ========================================
11:16:47.304 -> Name: (not available)
11:16:47.304 -> MAC Address: c5:1d:ac:ed:91:92
11:16:47.304 -> Product Code: 0x2 (Battery Monitor (BMV))
11:16:47.304 -> Key (byte 0): 0xB4
11:16:47.304 -> Beacon Type: 0x10
11:16:47.304 -> Nonce Counter: 1734
11:16:47.304 -> Data size: 25 bytes
11:16:47.304 -> Raw data: E1 02 10 02 83 A3 02 C6 06 B4 D4 E0 0B 58 A0 F9 CC 63 1E D1 5C 44 B2 18 C3
11:16:47.304 -> RSSI: -67 dBm
11:16:47.304 -> ========================================
11:16:47.304 ->
11:16:47.304 -> ========================================
11:16:47.304 -> ✓ VICTRON DEVICE DETECTED
11:16:47.304 -> ========================================
11:16:47.304 -> Name: SmartBMV HQ2318YM2EQ
11:16:47.304 -> MAC Address: c5:1d:ac:ed:91:92
11:16:47.304 -> Product Code: 0x2 (Battery Monitor (BMV))
11:16:47.304 -> Key (byte 0): 0xB4
11:16:47.304 -> Beacon Type: 0x10
11:16:47.304 -> Nonce Counter: 1734
11:16:47.304 -> Data size: 25 bytes
11:16:47.304 -> Raw data: E1 02 10 02 83 A3 02 C6 06 B4 D4 E0 0B 58 A0 F9 CC 63 1E D1 5C 44 B2 18 C3
11:16:47.304 -> RSSI: -67 dBm
11:16:47.304 -> ========================================
11:16:47.304 ->
11:16:47.539 -> ========================================
11:16:47.539 -> ✓ VICTRON DEVICE DETECTED
11:16:47.539 -> ========================================
11:16:47.539 -> Name: BSC IP22 12/30...HQ2437PRJV3
11:16:47.539 -> MAC Address: fb:82:24:5d:bb:27
11:16:47.539 -> Product Code: 0x0 (Test Record)
11:16:47.539 -> Key (byte 0): 0x0
11:16:47.539 -> Beacon Type: 0x10
11:16:47.539 -> Nonce Counter: 0
11:16:47.539 -> Data size: 23 bytes
11:16:47.539 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:47.539 -> RSSI: -94 dBm
11:16:47.539 -> ========================================
11:16:47.539 ->
11:16:50.122 -> --- Scan completed (8 BLE devices detected) ---
11:16:50.122 ->
11:16:52.188 -> ========================================
11:16:52.188 -> ✓ VICTRON DEVICE DETECTED
11:16:52.188 -> ========================================
11:16:52.188 -> Name: SmartBMV HQ2318YM2EQ
11:16:52.188 -> MAC Address: c5:1d:ac:ed:91:92
11:16:52.188 -> Product Code: 0x2 (Battery Monitor (BMV))
11:16:52.188 -> Key (byte 0): 0xB4
11:16:52.188 -> Beacon Type: 0x10
11:16:52.188 -> Nonce Counter: 1739
11:16:52.188 -> Data size: 25 bytes
11:16:52.188 -> Raw data: E1 02 10 02 83 A3 02 CB 06 B4 AC AB 50 C3 5C CC 46 71 73 EE 40 96 EB 1D 93
11:16:52.188 -> RSSI: -69 dBm
11:16:52.188 -> ========================================
11:16:52.188 ->
11:16:52.188 -> ========================================
11:16:52.188 -> ✓ VICTRON DEVICE DETECTED
11:16:52.188 -> ========================================
11:16:52.188 -> Name: (not available)
11:16:52.188 -> MAC Address: f3:81:dc:56:9f:97
11:16:52.188 -> Product Code: 0x13 (Unknown Product)
11:16:52.188 -> Key (byte 0): 0x86
11:16:52.188 -> Beacon Type: 0x2
11:16:52.188 -> Nonce Counter: 12184
11:16:52.188 -> Data size: 28 bytes
11:16:52.188 -> Raw data: E1 02 02 0A F8 C5 13 98 2F 86 11 11 DA 28 A9 F2 C9 0E BF 74 98 05 32 C3 D8 68 AE 1E
11:16:52.188 -> RSSI: -84 dBm
11:16:52.188 -> ========================================
11:16:52.188 ->
11:16:52.235 -> ========================================
11:16:52.235 -> ✓ VICTRON DEVICE DETECTED
11:16:52.235 -> ========================================
11:16:52.235 -> Name: (not available)
11:16:52.235 -> MAC Address: fb:c1:a3:08:4e:8c
11:16:52.235 -> Product Code: 0x7F (Unknown Product)
11:16:52.235 -> Key (byte 0): 0xB5
11:16:52.235 -> Beacon Type: 0x1
11:16:52.235 -> Nonce Counter: 51356
11:16:52.235 -> Data size: 18 bytes
11:16:52.235 -> Raw data: E1 02 01 0A C7 1A 7F 9C C8 B5 00 00 00 00 00 00 00 00
11:16:52.235 -> RSSI: -72 dBm
11:16:52.235 -> ========================================
11:16:52.235 ->
11:16:52.235 -> ========================================
11:16:52.235 -> ✓ VICTRON DEVICE DETECTED
11:16:52.235 -> ========================================
11:16:52.235 -> Name: (not available)
11:16:52.235 -> MAC Address: f3:81:dc:56:9f:97
11:16:52.235 -> Product Code: 0x1 (Solar Charger)
11:16:52.235 -> Key (byte 0): 0x4B
11:16:52.235 -> Beacon Type: 0x10
11:16:52.235 -> Nonce Counter: 57847
11:16:52.235 -> Data size: 22 bytes
11:16:52.235 -> Raw data: E1 02 10 02 56 A0 01 F7 E1 4B E1 B4 D1 38 BC 85 CE CC 2B 8E 94 CE
11:16:52.235 -> RSSI: -85 dBm
11:16:52.235 -> ========================================
11:16:52.235 ->
11:16:52.235 -> ========================================
11:16:52.235 -> ✓ VICTRON DEVICE DETECTED
11:16:52.235 -> ========================================
11:16:52.235 -> Name: SmartSolar HQ22417222G
11:16:52.235 -> MAC Address: f3:81:dc:56:9f:97
11:16:52.235 -> Product Code: 0x1 (Solar Charger)
11:16:52.235 -> Key (byte 0): 0x4B
11:16:52.235 -> Beacon Type: 0x10
11:16:52.235 -> Nonce Counter: 57847
11:16:52.235 -> Data size: 22 bytes
11:16:52.235 -> Raw data: E1 02 10 02 56 A0 01 F7 E1 4B E1 B4 D1 38 BC 85 CE CC 2B 8E 94 CE
11:16:52.235 -> RSSI: -85 dBm
11:16:52.235 -> ========================================
11:16:52.235 ->
11:16:52.376 -> ========================================
11:16:52.376 -> ✓ VICTRON DEVICE DETECTED
11:16:52.376 -> ========================================
11:16:52.376 -> Name: (not available)
11:16:52.376 -> MAC Address: fb:82:24:5d:bb:27
11:16:52.376 -> Product Code: 0x8D (Unknown Product)
11:16:52.376 -> Key (byte 0): 0xA5
11:16:52.376 -> Beacon Type: 0x2
11:16:52.376 -> Nonce Counter: 54941
11:16:52.376 -> Data size: 29 bytes
11:16:52.376 -> Raw data: E1 02 02 0A 4F E2 8D 9D D6 A5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:52.376 -> RSSI: -94 dBm
11:16:52.376 -> ========================================
11:16:52.376 ->
11:16:52.423 -> ========================================
11:16:52.423 -> ✓ VICTRON DEVICE DETECTED
11:16:52.423 -> ========================================
11:16:52.423 -> Name: (not available)
11:16:52.423 -> MAC Address: fb:c1:a3:08:4e:8c
11:16:52.423 -> Product Code: 0x0 (Test Record)
11:16:52.423 -> Key (byte 0): 0x0
11:16:52.423 -> Beacon Type: 0x10
11:16:52.423 -> Nonce Counter: 0
11:16:52.423 -> Data size: 24 bytes
11:16:52.423 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:52.423 -> RSSI: -73 dBm
11:16:52.423 -> ========================================
11:16:52.423 ->
11:16:52.423 -> ========================================
11:16:52.423 -> ✓ VICTRON DEVICE DETECTED
11:16:52.423 -> ========================================
11:16:52.423 -> Name: Orion XS HQ2443F7747
11:16:52.423 -> MAC Address: fb:c1:a3:08:4e:8c
11:16:52.423 -> Product Code: 0x0 (Test Record)
11:16:52.423 -> Key (byte 0): 0x0
11:16:52.423 -> Beacon Type: 0x10
11:16:52.423 -> Nonce Counter: 0
11:16:52.423 -> Data size: 24 bytes
11:16:52.423 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:52.423 -> RSSI: -74 dBm
11:16:52.423 -> ========================================
11:16:52.423 ->
11:16:52.564 -> ========================================
11:16:52.564 -> ✓ VICTRON DEVICE DETECTED
11:16:52.564 -> ========================================
11:16:52.564 -> Name: (not available)
11:16:52.564 -> MAC Address: fb:82:24:5d:bb:27
11:16:52.564 -> Product Code: 0x0 (Test Record)
11:16:52.564 -> Key (byte 0): 0x0
11:16:52.564 -> Beacon Type: 0x10
11:16:52.564 -> Nonce Counter: 0
11:16:52.564 -> Data size: 23 bytes
11:16:52.564 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:52.564 -> RSSI: -95 dBm
11:16:52.564 -> ========================================
11:16:52.564 ->
11:16:55.148 -> --- Scan completed (8 BLE devices detected) ---
11:16:55.148 ->
11:16:57.167 -> ========================================
11:16:57.167 -> ✓ VICTRON DEVICE DETECTED
11:16:57.167 -> ========================================
11:16:57.167 -> Name: (not available)
11:16:57.167 -> MAC Address: fb:c1:a3:08:4e:8c
11:16:57.167 -> Product Code: 0x7F (Unknown Product)
11:16:57.167 -> Key (byte 0): 0xB5
11:16:57.167 -> Beacon Type: 0x2
11:16:57.167 -> Nonce Counter: 64924
11:16:57.167 -> Data size: 24 bytes
11:16:57.167 -> Raw data: E1 02 02 0A C7 1A 7F 9C FD B5 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:16:57.167 -> RSSI: -73 dBm
11:16:57.167 -> ========================================
11:16:57.167 ->
11:16:57.167 -> ========================================
11:16:57.167 -> ✓ VICTRON DEVICE DETECTED
11:16:57.167 -> ========================================
11:16:57.167 -> Name: (not available)
11:16:57.167 -> MAC Address: c5:1d:ac:ed:91:92
11:16:57.167 -> Product Code: 0xD5 (Unknown Product)
11:16:57.167 -> Key (byte 0): 0x83
11:16:57.167 -> Beacon Type: 0x2
11:16:57.167 -> Nonce Counter: 14490
11:16:57.167 -> Data size: 24 bytes
11:16:57.167 -> Raw data: E1 02 02 0A B2 FF D5 9A 38 83 42 0E 34 30 7C 7A F1 B4 15 14 BE 16 15 A5
11:16:57.167 -> RSSI: -68 dBm
11:16:57.167 -> ========================================
11:16:57.167 ->
11:16:57.214 -> ========================================
11:16:57.214 -> ✓ VICTRON DEVICE DETECTED
11:16:57.214 -> ========================================
11:16:57.214 -> Name: (not available)
11:16:57.214 -> MAC Address: c5:1d:ac:ed:91:92
11:16:57.214 -> Product Code: 0x2 (Battery Monitor (BMV))
11:16:57.214 -> Key (byte 0): 0xB4
11:16:57.214 -> Beacon Type: 0x10
11:16:57.214 -> Nonce Counter: 1744
11:16:57.214 -> Data size: 25 bytes
11:16:57.214 -> Raw data: E1 02 10 02 83 A3 02 D0 06 B4 F1 0A 6C D5 FA E1 95 C3 D1 66 C0 DD 18 14 3B
11:16:57.214 -> RSSI: -68 dBm
11:16:57.214 -> ========================================
11:16:57.214 ->
VANTHUAN
(VAN THUAN)
November 10, 2025, 3:23pm
7
Additional information:
For the Orion and IP22, in the traces, at best when the Beacon Type equals 0x10, the subsequent data is always zero - these are only test records.
IP22 example:
11:17:08.816 -> ========================================
11:17:08.816 -> ✓ VICTRON DEVICE DETECTED
11:17:08.816 -> ========================================
11:17:08.816 -> Name: BSC IP22 12/30...HQ2437PRJV3
11:17:08.816 -> MAC Address: fb:82:24:5d:bb:27
11:17:08.816 -> Product Code: 0x0 (Test Record)
11:17:08.816 -> Key (byte 0): 0x0
11:17:08.816 -> Beacon Type: 0x10
11:17:08.816 -> Nonce Counter: 0
11:17:08.816 -> Data size: 23 bytes
11:17:08.816 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:17:08.816 -> RSSI: -93 dBm
11:17:08.816 -> ========================================
Orion example:
11:17:12.291 -> ========================================
11:17:12.291 -> ✓ VICTRON DEVICE DETECTED
11:17:12.291 -> ========================================
11:17:12.291 -> Name: Orion XS HQ2443F7747
11:17:12.291 -> MAC Address: fb:c1:a3:08:4e:8c
11:17:12.291 -> Product Code: 0x0 (Test Record)
11:17:12.291 -> Key (byte 0): 0x0
11:17:12.291 -> Beacon Type: 0x10
11:17:12.291 -> Nonce Counter: 0
11:17:12.291 -> Data size: 24 bytes
11:17:12.291 -> Raw data: E1 02 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11:17:12.291 -> RSSI: -71 dBm
11:17:12.291 -> ========================================
Another observation: It seems that the data reception rate from the IP22 is slower than the other 3 devices. I receive data much less frequently.
thiemovanengelen
(Thiemo van Engelen (Victron Energy staff))
November 11, 2025, 7:48am
8
Hi @VANTHUAN
I believe the problem is in the toCharArray function. I think this stops on the first \0 character and for the OrionXS and the IP22, the first byte after the 0x10 byte is 0x00. If it then stops copying, the remainder will be empty.
Perhaps you can try to copy the string using:
memcpy(manCharBuf, manData.c_str(), manDataSize + 1);
And I would strongly suggest to add a check that the beaconType is 0x10. This will save a lot of logging.
With kind regards,
Thiemo van Engelen
VANTHUAN
(VAN THUAN)
November 11, 2025, 9:13am
9
Bonjour,
So that’s it then! I can’t wait to try it with a new code. Unfortunately, I’ll be away for a week, but once I’m back, I’ll test it as soon as possible and share my feedback here.
In this small program, it’s true that I’m not filtering on code 0x10 — that’s on purpose, to see everything that’s being received. But it’s only a test program to try to understand why I’m not getting any data from the Orion and the IP22. Of course, in the final program, this filtering will be included.
Thank you for this prompt reply.
Best regards
VANTHUAN
(VAN THUAN)
December 4, 2025, 2:36pm
10
Bonjour,
I modified the code like that:
uint8_t manCharBuf[32];
memcpy(manCharBuf, manData.c_str(), manDataSize);
and indeed it now works very well. The data retrieval from the Orion XS and the IP22 is functioning correctly.
Thank you for this valuable help. I was really stuck.
The only remaining issue is that I am able to receive data from the Orion at a fairly high rate, about once per second, i.e., like the BMV, whereas the reception from the SmartSolar is slower, about every 3 seconds, which is still acceptable.
But the major problem comes from the IP22, from which I only receive data every 15 to 20 seconds.
Is it normal for this device to send its data so slowly?
Best Regards.
thiemovanengelen
(Thiemo van Engelen (Victron Energy staff))
December 8, 2025, 8:11am
11
Hi,
All devices will advertise (send out BLE packets) at approx. the same rate. The data in the packets is updated at a rate of once per second on all devices. So when you receive less packets or updates, then this is something in the Arduino code. Or perhaps it is a range / RF problem.
With kind regards,
Thiemo van Engelen
VANTHUAN
(VAN THUAN)
December 8, 2025, 10:51am
12
Bonjour Thiemo,
Thank you for this quick and precise answer.
The code is the same (same logic) for the IP22 and for the other three devices, which are received correctly.
So for now, I am ruling out a software issue. Furthermore, all the devices are in the same location, within about 20 cm of each other. When I run tests, I am about 3-4 meters away at most from the devices, in a low-interference environment (polyester-wood boat). I will therefore conduct new tests by moving very close to the devices to eliminate any issues related to transmission power or interference.
Best Regards,
FX
VANTHUAN
(VAN THUAN)
December 10, 2025, 1:10pm
13
Bonjour,
This is indeed a distance-related issue.
So I conducted a test by moving the ESP32 closer to/farther from/closer again to the devices (Smart Solar, IP22, Orion) which are grouped together. They are within 3.5 meters. When brought closer, the reception frequency for the IP22 becomes comparable to the other devices. Therefore, it seems that the IP22’s signal strength is lower than the others. I will add a trace to measure the RSSI of the devices for comparison.
Is there a way to increase the Bluetooth transmission strength of the IP22, or how can I detect if it has a problem? Or could a future firmware update improve this? The devices are currently up to date.
Best Regards.
FXVT
thiemovanengelen
(Thiemo van Engelen (Victron Energy staff))
December 11, 2025, 7:44am
14
Hi,
I am not aware about firmware issues which result in lower BLE output strength, so do not count on it being improved with a firmware upgrade. It could be that it is quite direction sensitive se perhaps rotating the IP22 charger around its axis might improve the situation.
With kind regards,
Thiemo van Engelen
Colormaker
(Debbie M)
December 31, 2025, 12:37am
15
I just started looking into reading the victron ble messages using arduino. The code looks interesting can you offer any suggestions or tips as I begin coding? I have been reading post on this and some have run into issues with the ever evolving victron ble data structure. Its a hobby project for my solar club and an excited to give it a try.
Debbie
VANTHUAN
(VAN THUAN)
December 31, 2025, 12:47pm
16
Bonjour Debbie,
I’m not exactly sure which device you are referring to, because I opened this discussion about the Orion XS, but then we continued the discussion about the IP22.
Since I’m not entirely sure what exactly you are looking for, here is some general information. Here is the setup I have used for my Victron devices on board the boat.
typedef struct {
uint16_t vendorID;
uint8_t beaconType;
uint8_t unknownData1[3];
uint8_t victronRecordType;
uint16_t nonceDataCounter;
uint8_t encryptKeyMatch;
uint8_t victronEncryptedData[21];
uint8_t nullPad;
} __attribute__((packed)) victronManufacturerData;
typedef struct {
uint8_t deviceState;
uint8_t errorCode;
int16_t batteryVoltage;
int16_t batteryCurrent;
uint16_t todayYield;
uint16_t inputPower;
uint8_t outputCurrentLo;
uint8_t outputCurrentHi;
uint8_t unused[4];
} __attribute__((packed)) victronPanelData;
typedef struct {
uint16_t bmvTTG;
uint16_t bmvBat1Voltage;
uint16_t bmvAlarmReason;
uint16_t bmvBat2Voltage;
uint8_t byte0;
uint8_t byte1;
uint8_t byte2;
uint8_t byte3;
uint32_t bmvData2;
} __attribute__((packed)) victronBMVData;
typedef struct {
uint8_t deviceState;
uint8_t errorCode;
uint16_t outputVoltage;
uint16_t outputCurrent;
uint16_t inputVoltage;
uint16_t inputCurrent;
uint32_t offReason;
uint16_t unused;
} __attribute__((packed)) victronOrionXSData;
This is an excerpt from the code in the file “acquisition_BT.cpp” which defines the structures used in my project.
The file address is: Victron-Energy-Monitor-WaveShare/SRC/acquisition_BT.cpp at main · FXVT/Victron-Energy-Monitor-WaveShare · GitHub
The project address is: GitHub - FXVT/Victron-Energy-Monitor-WaveShare: A Waveshare ESP32 S3 touch LCD 5B turned into a monitor screen for Victron devices (BMV712, Orion XS50, IP22, SmartSolar)
And the GitHub (repository): FXVT · GitHub
Best regards and happy new year.
FX
Colormaker
(Debbie M)
December 31, 2025, 9:06pm
17
I trying to read the BMV-712, I am new to coding and use platformio. Most of the example I have been studying are from arduino ide and have a hard time converting to the platformio and getting the .ini file loaded. Thank you for your reply and hope you have a great New Year.
Debbie
system
(system)
Closed
January 14, 2026, 9:07pm
18
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.