Sven Hoexter: Looking into Envertech Enverbridge EVB 202 SetID tool
Disclaimer: I'm neither an experienced programmer nor proficient in reverse engineering,
but I like at least to try to figure out how things work. Sometimes the solution is so easy,
that even I manage to find it, still take this with a grain of salt.
I lately witnessed the setup of an Envertech
EnverBridge ENB-202 which is
kind of a classic Chinese IoT device. Buy it, plug it in, use some strange setup
software, and it will report your PV statistics to a web portal. The setup involved
downloading a PE32 Windows executable, with an UI that basically has two input boxes and a sent
button. You've to input the serial number(s) of your inverter boxes and the ID of
your EnverBridge. That made me interested in what this setup process really looks like.
The EnverBridge device itself has on one end a power plug, which is also used to
communicate with the inverter via some Powerline protocol, and a network plug with a
classic RJ45 end you plug into your network. If you power it up it will request an
IPv4 address via DHCP. That brings us to the first oddity, the MAC address is in the
The Network Communication
To my own surprise, the communication is straight forward. A single UDP paket is sent to the
broadcast address (255.255.255.255) on port 8765.
I expected some strange binary protocol, but the payload is just simple numbers. They're a
combination of the serial numbers of the inverter and the ID of the Enverbridge device.
One thing I'm not 100% sure about are the inverter serial numbers, there are two of them, but
on the inverter I've seen the serial numbers are always the same. So the payload is assembled
like this:
BC:20:90 prefix which I could not find in the
IEEE lists.
Setting Up the SetID Software
You can download the Windows software in a
Zipfile, once you unpack
it you end up with a Nullsoft installer .exe. Since this is a PE32 executable we've to add
i386 as foreign architecture to install the
wine32 package.
dpkg --add-architecture i386
apt update
apt install wine32:i386
wget http://www.envertec.com/uploads/bigfiles/Set%20ID.zip
unzip Set\ ID.zip
wine Set\ ID.exe
The end result is an installation in ~/.wine/drive_c/Program Files/SetID which reveals
that this software is build with Qt5 according to the shipped dll's. The tool itself is
in udpCilentNow.exe, and looks like this:
The Network Communication
To my own surprise, the communication is straight forward. A single UDP paket is sent to the
broadcast address (255.255.255.255) on port 8765.
I expected some strange binary protocol, but the payload is just simple numbers. They're a
combination of the serial numbers of the inverter and the ID of the Enverbridge device.
One thing I'm not 100% sure about are the inverter serial numbers, there are two of them, but
on the inverter I've seen the serial numbers are always the same. So the payload is assembled
like this:
- ID of the EnverBridge
- char 9 to 16 of the inverter serial 1
- char 9 to 16 of the inverter serial 2
CN and then just extract char 9 to 16.
The response from the EnverBridge is also a single UDP paket to the broadcast address on port
8764, with exactly the same content we've sent.
Writing a Replacement
My result is probably an insult for all proficient Python coders, but based on a bit of research
and some cut&paste programming I could assemble a
small script
to replicate the function of the Windows binary. I guess the usefulness of this exercise
was mostly my personal entertainment, though it might help some none Windows users to setup this
device. Usage is also very simple:
./enverbridge.py -h
Usage: enverbridge.py [options] MIIDs
Options:
-h, --help show this help message and exit
-b BID, --bid=BID Serial Number of your EnverBridge
./enverbridge.py -b 90087654 CN19100912345678 CN19100912345679
This is basically 1:1 the behaviour of the Windows binary, though I tried to add a bit more
validation then the original binary and some more error messages. I also assume the serial
numbers are also always the same so I take only one as the input, and duplicate it for the
paket data.
Then from the name of that pair (
In the case of a direct connection, I saw the following on the

A new release 0.4.17 of
I just took my dog for a nice long walk. It s the last walk we ll be taking for the next 3 weeks, he already starts moping around if we just skip one day of walking, so I m going to have to get creative keeping him entertained. My 



I recently stumbled upon
Like
Update 2020-04-03: Please see
If there are a few things I would change, then mostly the chaos about kwallet and Gnome keyring. I would love to have one secret storage, and it seems that Gnome Keyring is preferrable, but this is in flux at the moment. Also, it is not that pressing, because I have moved all my passwords into
Users had often asked where they could find older versions of packages from
This is my last Outreachy blogpost, as my internship unfortunately has come to an end. It was a blast!
Through the
I have profited so much from other people s work, so I am very happy if community members can build on mine. Afterall sharing is caring!
Through the Outreachy travel stipend I was able to
I completed six email templates for the DebConf sponsor communication campaigns. While two of them have already been very useful, I hope my
other proposals will be the ones used for the next waves of sponsors contacting.
I committed them to the sponsors git repo so they can be easily accessible and well documented for other DebConf teams or can be recycled for
smaller Debian events.
Unfortunately, due to the insecurity about travel around the Corona virus pandemic, the third wave of communication, originally scheduled for
the end of my internship in March, has been held. I have committed to the team to do this once the travel restrictions have been lifted and we
know that DebConf20 can proceed as planned for August 2020.
So yeah, I am definitely going to stay around and continue to help with DebConf fundraising!
DebConf has been held for two decades and it also has a generic website, so I also updated the
In the above screen shot you see the tabs in the upper part are hardly distinguishable, and in the lower part the active tab is clearly indicated with different colors. Searching for relevant search terms brings up a variety of suggestions, most of them not working. I finally found
I am trying to avoid bringing coronovirus into my house on anything,
and I also don't want to sterilize a lot of stuff. (Tedious and easy to
make a mistake.) Currently it seems that the best approach is to leave
stuff to sit undisturbed someplace safe for long enough for the virus to
degrade away.
Following that policy, I've quickly ended up with a porch full of stuff
in different stages of quarantine, and I am quickly losing track of how
long things have been in quarantine. If you have the same problem,
here is a solution:

I wanted to have a working Two Factor Authentification (2FA) setup to login on salsa.debian.org, Debians s gitlab instance.
The following contributors got their Debian Developer accounts in the last two months:
Say What?

