Skip to content
Β 
Β 

Latest commit

Β 

History

225 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏠 WiBox Media

Custom firmware for the Fermax WiBox intercom module β€” so your door entry phone answers on your phone, your tablet, and Home Assistant, with nobody else's cloud in the middle.

Fermax WiBox GK7102S hardware


πŸ€” What is this, in plain words?

The Fermax WiBox is a small box an installer fits next to the intercom monitor in your hallway. Out of the box it links your door entry system to Fermax's phone app, through Fermax's servers.

This firmware replaces the software inside that box. Same hardware, same wires, but afterwards the module talks to your home instead of a company's cloud:

  • πŸ“Ή you see who is at the door
  • πŸ—£οΈ you talk to them
  • πŸšͺ you open the door
  • 🏑 all of it on your own network, and from outside if you set that up

Nothing leaves your house unless you make it. There is no account, no subscription, and it keeps working if a company changes its mind.

⚠️ This replaces the manufacturer's firmware. Take the backups described in Getting Started first. You can go back β€” the original Fermax software is still on the device and there is a factory mode to boot it β€” but do the backups anyway.


✨ What you get

πŸ“Ή Video H.264 from the door camera, over RTSP
πŸ”Š Two-way audio Hear the street and be heard back
πŸšͺ Open the door From Home Assistant, from a SIP phone, or # on a call
πŸ”” Doorbell events A real notification when somebody rings
πŸ“Έ Snapshots A picture of whoever rang, pushed to Home Assistant
🏠 Home Assistant Everything appears by itself over MQTT
☎️ SIP Works as a normal intercom against any SIP system
πŸ”„ Updates Installed over the air from Home Assistant or a shell
πŸ“Š Metrics Prometheus, if you like graphs

🧬 Where this comes from

This is a fork, and almost none of the hard groundwork is ours. The chain:

Project What it contributed
πŸ₯‡ duhow/wibox First opened the device: firmware patching, installation and recovery
πŸ”Š Conclusio/wibox-audio Traced the audio hardware and built the audio bridge
🧱 segator/wibox-media The SIP media daemon, Home Assistant integration and update system β€” the base this fork tracks
🎴 cmos486/wibox-intercom-video-card The Home Assistant card that ties it together on screen

This fork (cmos486/wibox-media) adds two-way audio over WebRTC, the VDS bus work described below, health monitoring, and a pile of fixes. The full list: About this fork.


πŸ”¬ What we figured out

A lot of this firmware exists because of things that were not documented anywhere and had to be found by experiment, on a bench built from a real Fermax installation β€” outdoor panel, original monitor and WiBox on the same wires. The findings are written up properly, because they are the difference between this working and this half-working:

  • πŸšͺ The VDS bus, explained β€” how Fermax's bus works, why the module needs an address and what happens when it is wrong (spoiler: absolutely nothing happens, silently), and how to set it without the pairing dance that does not work on every monitor.
  • 🀝 Sharing the bus with the original intercom β€” can this break the intercom the rest of the household uses? Tested properly, with the logs kept. Short answer: no, and the reason is reassuring.
  • πŸ“» UART codes β€” the complete command set the stock firmware uses to talk to Fermax's microcontroller, recovered by disassembling it, checksum and all.

πŸš€ Getting it running

Step 1 β€” Read before you flash πŸ“–

Getting Started covers access, backups, the first flash and the first boot. Do not skip the backups.

Which stock versions are known to work:

Stock firmware Access
V500.R001.A103.00.G0021.B007 βœ… telnet
V500.R001.A103.00.G0021.B010 βœ… telnet
V500.R001.A103.00.G0021.B013 πŸ”Œ serial only (telnet blocked)

Treat anything newer as serial-only until somebody proves otherwise.

Step 2 β€” Get the firmware πŸ’Ύ

VERSION="v0.18.14"
wget -O wibox-media.img \
  "https://github.com/cmos486/wibox-media/releases/download/${VERSION}/wibox-media-${VERSION}.img"

πŸ’‘ Run that on your computer, not on the WiBox. The stock device's wget cannot fetch GitHub's HTTPS downloads. Transfer the file across afterwards β€” Getting Started shows how with nc.

You do not need to build anything from source unless you are changing the code.

Step 3 β€” Connect it to WiFi πŸ“Ά

After the first flash the module raises its own WiFi network called IDS7938XXXX (the Device ID is printed on the label). Join it and open http://192.168.111.1/ to enter your network details. No cable needed.

To move it to a different network later, hold the WiFi button for 5 seconds. A blinking blue LED means the setup page is up again.

Step 4 β€” Configure it βš™οΈ

Settings live in one file on the device:

/mnt/mtd/sip_media.conf

For most installations only a handful of lines matter:

mqtt_host=192.168.0.203        # your Home Assistant / MQTT broker
mqtt_user=wibox
mqtt_pass=change-me
rtsp_enabled=1                 # turn on the video stream
video_enabled=1

Everything else, with defaults: Runtime configuration.

Step 5 β€” Add it to Home Assistant 🏠

If MQTT discovery is on, the device appears by itself. Nothing to write by hand, no integration to install β€” it shows up with everything already wired.

πŸŽ›οΈ Controls β€” what you press. Open the door, take a snapshot, turn video and RTSP on or off, set the flat's VDS address, arm a nightly reboot.

WiBox controls in Home Assistant

πŸ“Š Sensors β€” what it tells you. Call state, health, uptime, firmware version, and the snapshot of whoever last rang.

WiBox sensors in Home Assistant

πŸ”” Events β€” what just happened. Doorbell presses and the raw bus traffic, which is what you look at when something is not behaving.

WiBox events in Home Assistant

Step 6 β€” Tell it which flat it is πŸšͺ

This is the step people miss, and it is the one that breaks doorbells. The module has to know which flat it is copying, or street calls will never reach it and nothing will tell you why.

Clear the old address with five short presses of PB2, then type the number into the VDS Address entity in Home Assistant. Full explanation and how to check it: The VDS bus.


🎴 The Home Assistant card

For an actual "somebody is at the door" experience β€” the video, a talk button and a door button, working on phones and wall tablets, at home and away β€” pair this firmware with the companion card:

πŸ‘‰ wibox-intercom-video-card

WiBox intercom card in Home Assistant

Press and hold to talk, open the door, hang up. RTC conectado in the corner means the WebRTC path is up β€” that is the one that carries your voice back to the panel; if it ever says MSe instead, the stream is view-only.

Setting it up end to end (go2rtc, WebRTC, remote access, talk-back): Home Assistant two-way audio.


πŸ”Œ When you need the serial cable

Sooner or later you will want a USB-to-TTL adapter. It is how you get in when telnet is blocked, and how you rescue a device that will not boot. It costs very little and it is the difference between a bad afternoon and a dead module.

⚑ Use a 3.3 V adapter. A 5 V one can damage the board. Check the jumper before you plug anything in.

Three wires, and TX goes to RX:

WiBox board USB-TTL adapter
GND GND
TX RX
RX TX

Then, at 115200 baud:

picocom -b 115200 /dev/ttyUSB0

Where the pads are, with photos, and how to catch the bootloader: Serial TTL. If the device will not start at all: Recovery.


🩺 Keeping it healthy

The module is meant to be installed and forgotten, possibly in somebody else's house, so it looks after itself:

  • πŸ” Watchdog β€” if the daemon dies it is restarted
  • πŸ‘‚ Audio self-healing β€” a capture that goes silent is detected and restarted
  • πŸ“… Scheduled reboot β€” optional, off by default, set the hour from Home Assistant
  • πŸ• Correct clock β€” synchronised at boot, with your timezone
  • 🚦 Health entities β€” Health and Health Detail in Home Assistant say what is wrong

Updates install over the air from Home Assistant, and the VDS address survives them (verified β€” the module was updated with its pairing intact), so you do not need to visit the installation to update it.


πŸ†˜ Something is wrong

Symptom Look here
πŸ”• Nobody rings when the street button is pressed VDS address β€” almost always this
πŸ”΅ Blue screen instead of the camera The bus is not opened
πŸ”‡ Video works, audio is a faint hiss Same page, same cause
πŸ™Š They cannot hear you Two-way audio guide
πŸ“΅ The doorbell goes busy sometimes Sharing the bus
🧱 Will not boot Recovery + Serial TTL

πŸ“š All the documentation

Installing and running

Home Assistant

The Fermax side

Inside

Contributing

Raw reverse-engineering notes live in research/. You do not need them to install anything.


πŸ› οΈ Building from source

Only if you are changing the firmware.

make docker     # build the toolchain image
make build      # build the firmware
make verify     # check the result

Handy during development:

make build-media       # rebuild just the daemon and the updater
make deploy-runtime    # push the daemon to a running WiBox (volatile β€” lost on reboot)
make verify-device     # check runtime + MQTT against a live device
make device-status     # status and recent logs

⚠️ make deploy-runtime is for testing only. It does not survive a reboot β€” install a real release if you want the change to stick.

Details in Development and About this fork.

About

Custom firmware for the Fermax WiBox (GK7102S) VDS intercom: see, talk and open your door from Home Assistant or any SIP client, with no vendor cloud. Fork adding WebRTC two-way audio, VDS bus reverse engineering and self-healing health monitoring.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages