Firmware as source of truth: a reproducible analysis pipeline for every gateway (thanks @gdluck!) #613
Replies: 6 comments 12 replies
|
My point of view these days is that everything should end up in the Encyclopedia and Machine KB 😅
|
|
That would be amazing idea if you could place these in a new repo. I can than build a GitHub workflow
Then we can place all the firmware there
My point of view these days is that everything should end up in the Encyclopedia and Machine KB 😅
But yes, its place is probably a separate repo in the Org
For my work in the Encyclopedia I have stored a few in an R2 bucket, I can probably make it publicly available if need be.
Product
Firmware version
Archived filename
F450
020010
F450_020010.fwz
F450
020010-PROD
F450_020010-PROD.fwz
F453AV
3.0.14
WS_10DIN_030014.fwz
F454
2.0.51
F454_020051.fwz
F455
1.1.2
F455_1_1_2.fwz
F459
020105
F459_020105.fwz
F460
020012
F460_020012.fwz
F461
020011
F461_020011.fwz
MH202
1.0.24
MH202_010024.fwz
—
Reply to this email directly, view it on GitHub , or unsubscribe .
You are receiving this because you authored the thread. Message ID: <OpenWebNet-HA/MyHOME/repo-discussions/613/comments/18717715 @ github . com>
|
|
You can find my work here I managed to control devices by sending electronic hex data directly to SCS bus |
|
Thanks @gdluck for sharing this work, and @GreenGrassBlueOcean for proposing a reproducible approach. I support having a separate repository for the tooling, with the findings feeding back into the Encyclopedia / Machine KB and regression tests in OWNd. I would start by reproducing the existing MyHOMEServer1 experiment, validating a concrete finding against a real gateway, and then extending it to a second model. That would give us a solid basis for the wider pipeline. Each finding should remain tied to the gateway model and firmware version, clearly distinguishing emulation results from observations on real hardware. Differences between gateways are exactly what we need to understand. I also wouldn't make testing every gateway a prerequisite for every OWNd fix. Parser crashes on valid messages can be addressed independently, while changes to command generation deserve broader compatibility checks. On my side, I have an F454, a MyHOMEServer1 and a MH201 available and can help validate specific cases on my installation. A small set of reproducible tests, with the expected responses clearly documented, would make that straightforward. |
|
Impressive work, thank you @gdluck. I can help on the validation side: I run a MyHOMEServer1 (firmware 2.87.13) on a live plant, so findings from the emulated run can be checked against the real gateway here, with read-only probes or bus captures like the cover trace already in the corpus (#466). The WHO 2 side is the one I care about most for the calibration work: which bus frames the gateway produces for cover commands and the |
|
Status update: phase 1 is live → https://github.com/OpenWebNet-HA/own-firmware-oracle (Apache-2.0) What works today (MH200N 1.1.8)
@gdluck was right about the passwords: the The MH200N is ARM Linux 2.4 like MyHOMEServer1, with an ext2 rootfs, a recovery rootfs and an application archive that holds Proposal: download from Legrand, store nothing ourselves @anotherjulien, I checked the So I'd like to make the vendor URL the primary source in every catalog entry. The pipeline then needs no R2 token, no Does that work for you? If so, the next catalog entries are F454 2.0.51 and MH202 1.0.24, using the SHA-256 values from your manifest. Next
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
@gdluck @anotherjulien @fedem95 @Interstellar0verdrive @xtimmy86x
Thank you, @gdluck
In OpenWebNet-HA/OWNd#77 @gdluck unpacked the MyHOMEServer1 firmware and found the programs that translate between OpenWebNet text and SCS bus frames (
bt_luci,coso,bt_termo,bt_device,bt_multi). They then ran those programs on an emulated SCS bus and used them as an oracle: send a frame in, record which bus frame comes out (or that none does). The result is the best source of truth we have ever had for this protocol:set_central_modesends codes the gateway drops or misreads, two heating parser crashes on frames the firmware really produces, and brightness 0 builds a level the firmware refuses;Every claim says what kind of evidence backs it (firmware run, read-only gateway probe, or code). That is exactly how protocol facts should be established. Amazing work, thank you!
Proposal: do this for every gateway, as a GitHub pipeline
Today a lot of what we "know" comes from manuals that are incomplete or wrong, and from captures on one or two plants. We keep hitting cases nobody can explain. Example: light 74 on an MH200 answers
*1*19*74##plus a WHO 1001 DIM 11 fault mask. WHAT 19 is not in WHO_1.pdf or OPEN.db, and the mask bits are undocumented. That is the reason behind the repairs work in #593 and #611. The firmware'sbt_luci/bt_devicewould tell us which bus frame produces WHAT 19 and what each mask bit means.I'd like to turn @gdluck's method into a reproducible pipeline, one per gateway model we can get an image for (MH200N, F454, MH202, MyHOMEServer1, ...). Every step from binary to finding should be inspectable, but no vendor binary or decompiled code is ever committed:
findings/<gateway>/*.mdpointing at TSV rows; new golden fixtures and tests in OWNd / MyHOMEAnyone holding an image with the same SHA-256 can re-run the scripts and diff the TSVs, so every claim can be checked by someone else. Where the firmware can be downloaded publicly from the vendor, a CI job can fetch it, verify the hash, re-run the pipeline and fail if the committed results change. It would never upload binaries as artifacts.
Ground rules (so this stays on the right side of the law)
Under the EU Software Directive (2009/24/EC), observing, studying and testing a program you lawfully own is allowed (Art. 5(3)), and so is decompiling it to achieve interoperability with an independent program (Art. 6). Neither right can be overridden by a licence. Protocols and data formats are not protected by copyright (CJEU C-406/10, SAS Institute). That leads to these rules:
(Not legal advice, just the framework I think we should stick to.)
Suggested setup
OpenWebNet-HA/own-firmware-oracle, so OWNd stays a clean library and the tooling has its own licence and history.oracle2/) and the exact firmware version / SHA-256 you used? That is the piece that makes everything else reproducible.bt_luci/bt_device, cross-checked live on the MH200. Then the ten OWNd fixes from Information #77, each checked again on other gateway models before we merge them, because MyHOMEServer1 and MH200 behaviour may differ.@anotherjulien @fedem95 @Interstellar0verdrive, what do you think? In particular:
All reactions