1 This repository contains utilities to use the [HM-CFG-USB(2)][] (HomeMatic USB
2 Konfigurations-Adapter) from [ELV][] on Linux/Unix by using [libusb 1.0][].
4 The HM-CFG-USB can be used to send and receive [BidCoS-Packets][] to control
5 [HomeMatic][] home automation devices (like remote controllable sockets,
6 switches, sensors, ...).
8 This repository contains, amongst others, an application, which emulates the
9 HomeMatic LAN configuration adapter-protocol to make it possible to use the
10 HM-CFG-USB in [Fhem][] or as a lan configuration tool for the [CCU][] or the
11 HomeMatic windows configuration software, also supporting devices using
12 AES-signing like [KeyMatic][].
14 [HM-CFG-USB(2)]: http://www.elv.de/homematic-usb-konfigurations-adapter-1.html
15 [ELV]: http://www.elv.de/
16 [libusb 1.0]: http://www.libusb.org/
17 [BidCoS-Packets]: http://homegear.eu/index.php/BidCoS%C2%AE_Packets
18 [HomeMatic]: http://www.homematic.com/
19 [Fhem]: http://fhem.de/
20 [KeyMatic]: http://www.elv.de/homematic-funk-tuerschlossantrieb-keymatic-silber-inkl-funk-handsender.html
21 [CCU]: http://www.elv.de/homematic-zentrale-ccu-2.html
23 ### Short hmland HowTo: ###
25 1. Install prerequisites:
26 `apt-get install libusb-1.0-0-dev build-essential git`
27 2. Get the current version of this software (choose **one** option):
28 * Get the current *release*-version as a .tar.gz:
29 1. Download the latest version from the [releases-directory][].
30 Version 0.100 is used as an example for the following commands.
31 2. Extract the archive: `tar xzf hmcfgusb-0.100.tar.gz`
32 3. Change into the new directory: `cd hmcfgusb-0.100`
33 * Get the current *development*-version via git (can be easily updated with `git pull`):
34 1. `git clone git://git.zerfleddert.de/hmcfgusb`
35 2. Change into the new directory: `cd hmcfgusb`
36 * Get the current *development*-version as an archive:
37 1. [hmcfgusb-HEAD-xxxxxxx.tar.gz][] (xxxxxxx is part of the commit-id.
38 xxxxxxx is just a placeholder for this HowTo, use your value)
39 2. Extract the archive: `tar xzf hmcfgusb-HEAD-xxxxxxx.tar.gz`
40 3. Change into the new directory: `cd hmcfgusb-HEAD-xxxxxxx`
41 3. Build the code: `make`
42 4. Optional: Install udev-rules so normal users can access the device:
43 `sudo cp hmcfgusb.rules /etc/udev/rules.d/`
44 5. Plug in the HM-CFG-USB
45 6. Run hmland (with debugging the first time, see `-h` switch):
47 7. Configure Fhem to use your new HMLAN device:
48 ``define hmusb HMLAN 127.0.0.1:1234``
49 ``attr hmusb hmId <hmId>``
51 **Important compatibility information:**
52 If older Fhem-versions (before 2015-06-19) or [Homegear][] before 2015-07-01
53 is used to connect to hmland, the `-I` switch might be needed to
54 impersonate a LAN-interface (this replaces the identity string HM-USB-IF with
55 HM-LAN-IF). eQ-3 rfd (CCU and configuration software) works without this switch.
56 Software which needs this will not keep a stable connection open to
57 hmland without this switch. It was the hardcoded default in versions
60 This incompatibility is needed so connecting software is able to
61 differentiate between HM-CFG-LAN and HM-CFG-USB.
63 **Important security information:**
64 Versions before 0.101 do not correctly transmit the AES channel-mask
65 to the HM-CFG-USB, which results in signature-requests not being generated
66 by the device in most cases. This can lead to processing of unsigned messages
67 by the host-software. If you are relying on authenticated messages
68 (with e.g. aesCommReq in Fhem) from devices like door-sensors and remotes,
69 you should upgrade to at least version 0.101.
71 [releases-directory]: https://git.zerfleddert.de/hmcfgusb/releases/
72 [hmcfgusb-HEAD-xxxxxxx.tar.gz]: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/snapshot/HEAD.tar.gz
73 [Homegear]: https://www.homegear.eu/
75 ### Updating the HM-CFG-USB firmware to version 0.967: ###
77 1. Compile the hmcfgusb utilities like in the hmland HowTo above
78 (steps 1 to 5) and stay in the directory
79 2. Download the new firmware: [hmusbif.03c7.enc][] (extracted from the
80 [Firmware update tool][]):
81 `wget https://git.zerfleddert.de/hmcfgusb/firmware/hmusbif.03c7.enc`
82 3. Make sure that hmland is not running
83 4. Flash the update to the USB-stick:
84 `./flash-hmcfgusb hmusbif.03c7.enc` (You might need to use `sudo` for this)
86 [hmusbif.03c7.enc]: https://git.zerfleddert.de/hmcfgusb/firmware/hmusbif.03c7.enc
87 [Firmware update tool]: http://www.eq-3.de/Downloads/Software/Firmware%20Update%20Tool/HM-CFG-USB-2_FW-UpdateTool-Usersoftware_V1_1_eQ-3_140619.zip
89 ### Updating HomemMatic devices over the air (OTA) (also for CUL devices): ###
91 1. Compile the hmcfgusb utilities like in the hmland HowTo above
92 (steps 1 to 5) and stay in the directory
93 2. Download the new firmware from [eQ-3][], in this example the HM-CC-RT-DN
95 3. Extract the tgz-file: `tar xvzf hm_cc_rt_dn_update_V1_4_001_141020.tgz`
96 4. Make sure that hmland is not running
97 * When using the **[HM-CFG-USB(2)][]**, flash the new firmware to the device
98 with serial *KEQ0123456*:
99 `./flash-ota -f hm_cc_rt_dn_update_V1_4_001_141020.eq3 -s KEQ0123456`
100 * When using a **[culfw][]**-based device (**[CUL][]/[COC][]/...**), flash
101 the new firmware to the device with serial *KEQ0123456*:
102 `./flash-ota -f hm_cc_rt_dn_update_V1_4_001_141020.eq3 -s KEQ0123456 -c /dev/ttyACM0`
104 **Automatic firmware-updates:**
105 The options `-C`, `-D` and `-K` can be used to send a device to the
106 bootloader automatically without manually rebooting the device while
110 flash-ota uses the public domain [AES implementation by Brad Conte][] to answer
111 signing-requests with culfw-devices.
113 [eQ-3]: http://www.eq-3.de/downloads.html
114 [culfw]: http://culfw.de/culfw.html
115 [CUL]: http://busware.de/tiki-index.php?page=CUL
116 [COC]: http://busware.de/tiki-index.php?page=COC
117 [AES implementation by Brad Conte]: https://github.com/B-Con/crypto-algorithms