Custom Component: Crow Runner / Arrowhead AAP 8/16 Alarm IP Module

Well then I must thank you all the more then! That’s awesome that you convinced them to make that firmware :smile::smile: I was also super impressed by how willing they were to send me information and support for using that firmware. It’s so surprising that they were willing to do that.
I managed to find my Crow Runner 8/16 for free on Gumtree, to replace my very ancient existing alarm. I was lucky enough that it even came with the OLED display keypad, which looks really nice. When I bought the IP module from a security supplier, even he commented how buggy the stock firmware that came with it was. It would have been a crying shame to have this alarm and IP module and be limited by that crappy firmware it came with.

I bought an IP module myself and connected it to my CROW RUNNER 8/16. So far I have problems with the connection via Telnet. Are there any settings I need to turn on because the Telnet connection doesn’t work? The normal WEBUI works. I want to connect the alarm system to my HA (HASSIO) installation to get the door/window and other states from the alarm system.
It seems version 0.20 is a very good starting point, but I need some help with the firmware.
At the moment I got it shipped with Ver 2.10.5542 2019 Sep 19 12:57:48:48.

Well, the crow ip module is shipped with stock firmware from Crow; which is useless because it doesn’t support telnet or any other connections but only their own smartphone app.
In order to be able to use this custom component, there are things to be done:

A different firmware should be uploaded to the ip module. This firmware is written by AAP ( The version for this firmware is Ver 2.10.3628 2017 Oct 20 09:48:43 and it is specifically written for telnet connection to home automation software. You will need to contact AAP from their email address in that web page and request this firmware. If you are unable to get it, i can also provide you with that but please be aware that i accept no responsibility for if you turn your ip module to brick while uploading the firmware; or any other problems whatsoever.

You will need a windows PC and D-Link USB upload Cable (USB D-LINK - Tools - Arrowhead Alarm Products or d-link crow cable) to be able to load this specific firmware to your ip-module card. Once you do it and make the necessary settings from its WEBUI, you will be able to use this custom component.

And please make note that you will not be able to use the Crow or AAP smartphone app anymore. This firmware supports only the telnet connection; not the crow/AAP smartphone app. But i use the homeassistant ios companion anyway so i don’t need any other app for my runner 8/16.

EDIT: AAP is a Crow subsidiary who manufactures the IP Modules for the Crow. So, even though it says Crow IP-Module, it is basically the same with AAP IP-Module (As far as i know)

1 Like

For anyone attempting to flash the IP Module firmware without the D-Link USB upload cable; below is the serial pinout in order to connect up an FTDI or similar serial interface to it (make sure it’s running at 3V3). I’ve done it myself, but I’d like to warn anyone that this is a very risky procedure that could result in a bricked IP module. If you don’t feel comfortable with DIY electronics I’d recommend getting a hold of the DLINK for more peace of mind.


@febalci thanks you for the details and the work you have already done. I’m aware that I can’t run the AAP app anymore, but I don’t care.
I want all my stuff to be connected to HA and use it in there. I have already written to AAP about this.
I need the binary sensors to check the door and windows and the alarm panel itself.

I need to set up a laptop with Win98sp3 on it. I have an old one somewhere, let’s see. WIN10 1909 and the iap program doesn’t work as it should anymore.

@jokkydee Thanks for the pins, I will use them to flash the IP module. I have so many sonoffs and whatever flashed it will work. One thing, I wonder already, the 3.3V. I just need TX->RX and RX->TX and GND no 3.3V, because it should be powered by the device itself, so the 12V+ or whatever the alarm supplies. Do I see correctly?

Today I have no more time, so I will try it in the next days.
When the system is running, I’ll get back to you, and you two will have another one to test things if there’s a need.

Thank you so far for your support.

That’s right, 3V3 isn’t required between the boards, as the IP Module should be powered by it’s usual 12V prior to beginning the update, and there is an onboard 3V3 that powers the digital electronics. So as long as your serial interface is running at 3V3, it will be fine.

I was pretty sure I was using a win7 laptop to run the IAP application, and that worked fine. Have you tried running the application in compatibility mode?

As an aside - if you ever figure out how to get the upload/download software working with the Runner panel, let me know, as I wasn’t able to get it to work. This is the software used to connect the Runner alarm panel to a PC and download all the settings, or upload them, in case you needed to replace the panel and didn’t want to stand there reprogramming everything.

Downloading the Runner panel settings is a good idea. Let me try it with D-Link cable in the following suitable day and let you know if that works…

Do you know where to find the Upload/Download software? as it’s different to the IAP software for updating firmware on the IP module. If you don’t have it or can’t find it, I can send it to you. It seems the issue I was having was something to do with the settings on the software perhaps - it doesn’t look like the software got much love from the developers.

Yep i do have the upload/download software from Crow. Although this software is a password protected zip file on Crow webpage, i managed to have it from a local Crow dealer web page. Looking at the software doc, it says something about a default .conf file to be placed in the folder of the app; but i will check it thru and inform you about it.

EDIT: 1) Btw; about your issue with the quick arm A or B areas; it is doable, but i need to understand the usage of it from the panel so i will go thru the docs. The thing is; alarm control panel on HA doesn’t allow extra buttons llike “Arm A” or “Arm B” as far as i see, it is only Arm, Disarm, Panic etc. So maybe i should create extra 2 switches for this purpose. Whenever i find some time i will go thru to add this.
2) Are you using any smoke detectors? I have an issue with it. Everytime wife cooks meat, smoke detector is on :grin: To reset it i need to find a ladder; take the detector out and put it back in. Have to find something easier :face_with_monocle:

so I had some time yesterday and flashed the IP module with the firmware version Ver 2.10.3628 2017 Oct 20 09:48:43 and the pins given by Jokkydee and that worked as expected.

in HA 100.3 I now run the customer component created by Febalic and it all works so binary sensors work, plant status and system settings.

Yes, there is a problem for me as well with the ARM process and I still have to figure out how to get the keyboard up and running to activate and deactivate the system. The deactivation via the button on the alarm panel works, but the absence function(arm) does not work yet for me. If I arm the system via the keypad on the entrance the system is armed and the status is shown correct.

I need more time to test and adjust these things. But so far I am quite happy with what I have.
Only the Telnet connection with e.g. Putty still didn’t work. Is a special port needed? Telnet is 23 by default, SSH is 22 and the IP port the encoding accesses is 5002, but none works. I just can’t log in successfully via TELNET. Is there another port or do I expect something that doesn’t work here?
Or only via the COM port of the USB to UART controller?

@febalci what kind of smoke sensor are you using. I have the Fibaro Smoke Sensor FGSS-001 connected via zWave to HA and I had issues with that as well. The first point is and was always the right place.


  1. When choosing location of smoke sensor, make sure the alarm sound can be
    easily audible in other rooms in the building.
  2. It’s recommended to install the sensor in already decorated, painted rooms.
  3. It’s recommended to install the sensor at least 1,5m from air conditioners.
  4. Do not install the sensor in direct sunlight. Keep at least 0,5m distance from
    light sources.
  5. Do not install the sensor in places prone to drafts.
  6. Do not install the sensor in places with high water vapor condensation, e.g.
    above stoves, ovens, kettles, etc.
  7. The device can not be installed in places where the temperature exceeds
    operational values (0o C - 55oC).

I changed than the sensitivity as well as it was set for one place to “sharp”

  1. Fibaro Smoke Sensor sensitivity
    There are 3 levels of sensitivity to smoke presence. Level 1 means the highest
    sensitivity. Rising the parameter value lowers the sensitivity to smoke presence.
    Available settings: 1 - 3
    1 - HIGH Sensitivity
    2 - MEDIUM Sensitivity
    3 - LOW Sensitivity
    Default setting: 2
    Parameter size: 1 [byte]

Now I’m happy with them…

@acdcnow, IP Module allows only 1 connection at a time. So, if your HA is connected to the module with custom-component, you cannot telnet it at the same time. So you have to shut down your HA instance; and then telnet to port 5002. When is it connected it writes nothing, so you just write STATUS on the console and press return to see if the connection is succesful.

It is funny that the ARM process is not working. I have it working perfectly fine with Arm, Stay Arm and Disarm. Except for the fact that you cannot Quick Arm A or Quick Arm B Areas yet, the total arming and disarming works fine. Btw, since you enter disarm code in the yaml, the keyboard on the ha alarm control panel entity never shows up. It only has arm-disarm, stay arm buttons. Did you add the disarm code to the configuration.yaml?

  code: 'XXXX'
  port: 5002
  keepalive_interval: 60
  timeout: 20

For the smoke sensor, i have it installed on Runner, that’s a basic non auto-reset 12V smoke sensor which acts as a contact sensor for one of the zones of Runner alarm. There are auto-reset smoke sensors for this which will solve my issue but nobody imports it to my country. I was also thinking to convert it to either zigbee or zwave sensor but dealing with this is much more cheaper. A local Crow guy told me that i can feed the sensor from one of the outputs from the alarm panel so i can cut the power of the sensor and reset it from the alarm panel. Like making output 3 off first and output 3 back on. That makes sense i can try this.


  1. so when I created two alarm panels in HA, one for each area, is pressing arm/disarm for each of these doing the same thing under the hood? i.e. this is what my alarm panels currently look like;


I’m guessing there is no way to have each area’s ‘arm’ buttons do different things?

  1. What you mentioned about cutting the power to a non-auto-reset smoke detector is exactly what my local security supplier also recommended me to do. I think all my smoke alarms are auto-reset so I never ended up needing to do it. But he gave me the programming sequence to set it up;

Invert the output:
P34 E o/p E 1 E
Pulse output for reset:
P36 E o/p E 3 E
24 hr fire zone:
P123 E o/p E 5 E

So yes, instead of powering the smoke detectors by the usual +12V supply terminals, you use an inverted output (normally +12V instead of GND). Then after the alarm has been triggered, the output will pulse off (resetting the smoke detector) when the alarm is kissed off or reset. I think this is probably your best solution.

1 Like


Unfortunately, as of now, both panels in HA are sending the same code to the module. Arm home sends ‘ARM’, arm away sends ‘STAY’ and disarm sends ‘KEYS XXXXE’.
These commands are valid for both areas, so ARM arms both A and B at the same time.

When i check out the IP module document, there is a logic inconsistency. The commands ‘A’ and ‘B’ are for quick arm areas A and B, i can work with that. But there is no DISARM A or STAY A command. I can implement “quick arm area” for the “arm away” modes of both panels, but then i don’t know how to handle an “ARM total system”, or “disarm only A”.

If i create 3 alarm panels, 1 for total system, 2 for areas; that means i can handle most of the tasks but the area panels would have only the “Arm away” buttons. Is this ok? What are your thoughts?

I wonder if this could be handled by sending different keypad codes. Because I’ll tell you my current setup. I have a detached garage, which only I use, not my housemate. So what I did was give my housemate a keypad code which only disarms Area A, so when I Arm both A and B, and my housemate comes home and types in his code, it only disarms the house, Area A, and not B, that stays Armed. My code however, disarms both Areas at once. So different keypad codes can be assigned to different areas. If we setup 3 keypad codes, one which disarms A and B, one that only disarms A, and one that only disarms B, and these 3 codes reside in the yaml config somewhere, then perhaps this could be a solution? So you’d send a different code depending on which area you wanted to disarm.

That makes sense now… I will be needing some feedback from you while implementing this.
As summary:

  • If you have no ‘areas’ defined in the config.yaml, create one alarm panel which uses Main Code that is the whole system (My setup).
  • If you have 1 area defined, create 2 alarm panels, 1st one uses Main Code, 2nd one uses Code A
  • If you have 2 areas defined, create 3 panels, 1 Main Code, 1 Area A code, 1 Area B code (Your setup)
  • Main Panel will have arm home, arm away and disarm buttons (ARM, STAY and KEYS XXXXE commands)
  • Panel A and B will have arm home and disarm buttons only. (A and KEYS AAAAE and B and KEYS BBBBE commands)

Is it OK this way?

I think that would be fine.
Another option that people might like, might be just to have the keypad in HA like usual, allowing them to have that added level of security and use it just like their normal alarm panel when disarming. I know it wouldn’t allow automations involving disarming and is more cumbersome to have to type in the code, but part of me feels more comfortable only automating arming operations. I’m trying to think of an automation that would disarm my alarm that wouldn’t be inherently insecure in some way (i.e. if it’s location based on my phone, then if someone stole my phone they could walk up to my house and my alarm would disarm). Also if someone stole my phone, or hacked my HA somehow, having to type in the actual code is another barrier that people might want to have. I’m personally not too worried about having to type in a 4 digit code to disarm the alarm. If this was the case, then there wouldn’t be much work required I’m guessing? The only thing would be to have buttons to quick arm area A or B. I wonder if there is a way to have this; a main alarm panel with a keypad, this can be used for arming both areas at once, and typing in codes to either disarm one area or both. Then another panel, or panels, or just buttons somewhere, which just have arming functions for each area, but without disarming functions. If I did want to automate disarming, I could just send the required keypad code to the alarm panel directly in the automation code. If that is less work, that would serve me pretty well.

Otherwise what you have described would be fine by me :slight_smile:

Are you able to share the automation you use to notify when an alarm is triggered? I’m wondering what the best way to do this is. I’m using Telegram, and my goal is to have a notification of which zone triggered the alarm. I understand from what you said earlier that the zone number is an attribute of the area state, I’m wondering if I could pass that through a switch case in node red, and then use that to generate the name of the zone based on which number it is and then send that through to a Telegram notify

Code keyboard is wise. I always thought it to serve my case; but you are completely right. To make it more universal, keyboard is a must. Will work on it. When everything works as expected, i am also planning to make a custom alarm-panel card just for this component.

My automation at the moment is this:

- alias: Alarm Trigger Message
  - platform: template
    value_template: '{{is_state_attr(''sensor.area_a_keypad'',''alarm'', True)}}'
  - service: notify.pushover
      message: >
        Alarm: {{ states('sensor.area_a_keypad') }}

This is working with 0.20 and it sends the Zone number only as a pushover message. NExt version i will try to make it send zone name instead of zone number.

@febalci I do have to setup as given in your service template. I do have the code entered there but whatever I try on the lovelace UI I do not get the system armed. Disarm is working well.

What is very strange is I use on the mobile phone homehabit a tile based UI and if I selected there the same entity alarm.control.panel.area_a and press first arm_away for arm_home and then after some sec. disarm I get the system armed.

If I remove the code in the config then I do not get any keypad to enter any code.

area_A arm_away disarm