Skip to content
flarn2006 edited this page Sep 24, 2021 · 5 revisions

Frequently Asked Questions

Q: I'm getting an error message that says "ModuleNotFoundError" at the bottom, and it won't run. How do I fix this?

A: You need to install three Python modules: crcmod, pyserial, and flask. The easiest way to do this is using the pip command; make sure you install this along with Python 3.

pip install crcmod
pip install pyserial
pip install flask

Q: Why doesn't anything appear on the virtual programmer screen?

A: Look at the console/terminal window in which you are running the script. Do you see lines saying "RX" appearing periodically? If not, then you are either using the wrong serial port, or you have not connected the cable properly. If you do see "RX" lines, and you are using UART, make sure the transmit (usually green) wire is properly connected. Otherwise, it may unfortunately be an issue (#4) to which I have not yet found the solution. If you are using RS-485, try using UART instead, or vice versa.


Q: How do I configure my system to run locally, without a connection to ADT?

A: At the Home Menu, click '4' twice to access the account settings. If you see a prompt "ACNT (1-N)", simply click Enter. Click Enter to select "Vw/Edt Acnt" from the menu, then using the ▼ button, select "Account Mode". If it says "Normal" or "Local Fire", click Enter, and use ▼ and ▲ to change it to "Local System". Then click Enter again.

Next, click "ESC." until you're back at Advanced Menu. (If you go back too far, click 4 at the Home Menu.) In the Advanced Menu, click '1' to select "Vw/Edt Panel". Scroll to "Comm Enable" using ▼. If it's set to "YES", change it to "NO". If your keypad beeps and says "LINE CUT" when you disconnect the phone line, you can disable that by changing "Line Cut" to "NO" in this same menu.


Q: My keypad starts beeping and saying "TROUBLE" after a few days, indicating an upload/download failure. ("CH" on Premium Keypad.) How do I make this go away for good?

A: This is the system complaining that it can't communicate with ADT's "Vivaldi" server, which they use to remotely access the system's programming. This check was enabled by the server the first time it connected to your system, and it cannot be disabled from the programming menus. (Except by resetting everything to defaults, which you probably don't want to do.)

The good news is, the same command the server used to enable it can also be used to disable it, and you can send this command yourself using command.py. To do so, connect your PC to the panel just like you would normally, and run:

command.py PORT 6 00000000

Replace PORT with the appropriate serial port, and make sure s3121.py is not running when using command.py, as it may interfere.


Q: When I attempt to download my system's programming, it doesn't work properly. Is there another way I can obtain the installer code?

A: First, look in the metal box that contains the main panel. Do you see the letter "R" followed by some numbers written anywhere? If you see something like "R123-45678", the installer code is in all likelihood the "45678" part, unless you previously reset the system to defaults, in which case the code will probably be 012345.

If the code isn't written down anywhere, you can use command.py to obtain the code. Connect your PC to the panel as usual, and run:

command.py PORT 90 Supers.db 0

Again, replace PORT with the appropriate serial port, and don't have s3121.py running. If it worked, you should see something like the following:

0000:  00 00 06 00 00 00 49 6E 73 74 61 6C 6C 65 72 00  |......Installer.|
0010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30  |...............0|
0020:  31 30 31 00 35 00 00 00                          |101.5...        |

Look at the right side, under the word "Installer". In this example, and most likely yours as well, the installer code is split across two lines: 0101. Actually it says 0101.5, but the 5 is just left over from the default. (Just chop off the . and any digits after it.)

Not getting any output like that? Not all systems will respond to that command; it likely won't if you have a BHS-3000. There's another command you can try, however:

command.py PORT 302 1

This will request the first account record from the system. If the installer code is not the default 012345, it will always be the same as the first account's "Comm 1 Rpt Acnt" number, which is contained in this record. The record will likely also contain the "R###-#####" number mentioned previously. For example:

0000:  06 00 00 01 55 6E 6E 61 6D 65 64 00 00 00 00 00  |....Unnamed.....|
0010:  00 00 00 00 00 00 00 00 00 00 00 00 00 52 31 32  |.............R12|
0020:  33 2D 34 35 36 37 38 00 00 00 63 00 00 00 34 35  |3-45678...c...45|
0030:  36 37 38 00 01 00 31 31 00 00 00 00 02 00 00 00  |678...11........|
0040:  00 00 00 00 03 00 00 00 00 00 00 00 04 00 00 00  |................|
0050:  00 00 00 00 05 00 00 00 00 00 00 00 06 00 00 00  |................|
0060:  00 00 00 00 07 00 00 00 00 00 00 00 00 0C 10 11  |................|
0070:  C5 00 86 0E 09 09 0F 27 03 00 00 00 00 00 00 00  |Å......'........|
0080:  00 00 00 00 00 00 00 00 00 00                    |..........      |

In this example, the code is 45678.

Clone this wiki locally