Skip to content

Manager for the Nortel Millennium series of payphones.

License

Notifications You must be signed in to change notification settings

cynical-media/mm_manager

 
 

Repository files navigation

Millennium Manager - mm_manager

Manager for Nortel Millennium Payphones

Overview

The Nortel Millennium payphones utilize a Manager to facilitate installation, reporting, and call cost rating. This Millennium payphone calls into the Manager using a 1200-baud phone modem.

Compatibility

mm_manager runs on Linux and MacOS X.

The mm_manager has been tested with a Nortel Multi-Pay (coin, credit card) Terminal with both V1.0 Control PCP (1.20 firmware) and V1.3 Control PCP (2.20 firmware.) It may work with other versions, please let me know.

Items Needed

  1. Nortel Millennium Multi-Pay Terminal running firmware v1.20 or v2.20. Some Millennium Terminals purchased from online phone stores may have been re-programmed with “demo” firmware that does not need a Manager. If you have one of these phones, you’ll have to program the phone back to stock v1.20 or v2.20 firmware.
  2. 24VDC @500mA Power Supply for Millennium Terminal
  3. Two phone lines (one for mm_manager, one for Millennium terminal.) They can be real POTS lines, or lines from your own PBX, but the Millennium should be able to dial the manager with a 10-digit number.
  4. 1200-baud or faster modem. I like the Lenovo 56K USB modems, but any 56K modem with Conexant chipset should work.
  5. T-Key such as the Jonard JIC-719A to open the payphone. I don’t recommend the flat, stamped T-keys as they are prone to bending.
  6. Keys for your terminal’s upper and lower locks, if locks are present.
  7. mm_manager software and a Linux machine (Raspberry Pi works great) or MacOS machine. This machine should be left on 24x7 so the terminal can call in when needed.

mm_manager Installation and Usage

Simply download the source files and example tables from GitHub. Then type “make” to compile mm_manager, and a few utilities.

Usage:

usage: mm_manager [-vhm] [-f <filename>] [-l <logfile>] [-a <access_code>] [-n <ncc_number>]
	-v verbose 	multiple v's increase verbosity.
	-f <filename> 	modem device or file
	-h 			this help.
	-l <logfile> 	log bytes transmitted to and received from
            the terminal. Useful for debugging.
	-m 			use serial modem (specify device with -f)
	-n <Primary NCC Number> [-t <Secondary NCC Number>] - specify
            primary and optionally secondary NCC number.

Millennium Terminal Hardware Installation

Phone Line

The Nortel Millennium payphones require a standard POTS line, with answer supervision in the form of polarity reversal to indicate that the far end has answered the call. This is required for the Millennium to know when to collect or refund coins. Most SIP ATAs and Cisco Voice Routers can be configured for polarity reversal. If your phone line does not support polarity reversal, an answer supervision detection module is available from Nortel.

Power Supply

The Nortel Millennium terminal requires 24VDC to supply power to the phone. Only limited functionality is provided for emergency service when this power is not present.

Other Terminal Installation Notes

The Millennium Terminal is an advanced payphone that contains a multitude of sensors to determine if the phone is installed and operating properly. This includes sensors to make sure that a coin box is installed, and also a sensor to ensure the coin vault door is in place. If your Millennium does not have a coin box, please obtain one. The coin boxes are standard Western Electric / Northern Electric Single Slot, readily available. In a pinch, the coin box sensor switch can be taped in the closed position. The same goes for the coin vault door. The coin vault door must be in place and locked. If your phone is missing the coin vault lock, as is quite common for these phones purchased on the second-hand market, please obtain the correct lock, or tape the switch closed.

If these sensors are not happy, the phone will alarm, and will go “Out of Service.”

Millennium Terminal Provisioning

Provisioning the Millennium Terminal is accomplished through the craft access menu on the terminal itself. For this, you will need the terminal’s access code, and a PIN. The default Access Code is 2727378 (CRASERV).

With the upper housing of the phone locked, take the handset off the cradle and replace it. Then key in 2727378. You will be prompted for a PIN, use anything above 5000, like 55555. Unlock the upper housing with a T-Key when prompted. You do not need to open the upper housing.

Start mm_manager.

Follow on-screen prompts on the Terminal to install.

Key in this Terminal’s telephone number (10-digits) NPA-NXX-XXXX.

Key in this Terminal’s 10-digit serial number (1234567890 is fine.)

Key in the Manager’s phone number (I use 1-855-288-2568, which I intercept in the Asterisk dialplan and send to the modem connected to the computer running mm_manager.)

Configuration Tables

Communication with the Nortel Millennium involves sending and receiving tables. Tables are numbered 1 through 155, and contain configuration information sent to the terminal or query / status information received from the terminal. Tables are of fixed size, depending on type of table. Some of the important tables for configuring a millennium phone include:

Each packet response from the Manager includes the Terminal’s phone number, followed by a byte containing the Table ID of the current table being sent by the Manager.

The following are some of the tables used by the Millennium terminal. They should be customized (using a hex editor) for your specific phone. Some parameters (like NCC numbers and Access Code) can be changed via command-line parameters to mm_manager.

Table ID (DEC) Table ID (Hex) Description Length Notes
36 0x24 Time Sync Request 0 TTMSYNC
20 0x14 Set Date / Time 7
44 0x2c Attention Request Table Update 1 TUPLOAD / TTBLREQ
38 0x26 Cash Box Status Message 62 TCASHST (Terminal Cash Box Status)

TCOLLCT

18 0x12 Terminal Table Data Update 0
151 97 Set Based Rating International Table 603 RATE and RATEINT: Almost all 00’s
14 0x0e Table Update ACK 1 Terminal -> Manager
150 0x96 Set Based Rating NPA Table 400 See RATENPA, 200-999, 4-bits each
138 0x8a Double Compressed LCD Tables 202 LCD (Local Call Determination)
137 0x89 Double Compressed LCD Tables 202 LCD (Local Call Determination)
136 0x88 Double Compressed LCD Tables 202 LCD (Local Call Determination)
135 0x87 Expanded Carrier Table (33 Entries) 1108 Provider names, 1st=coin, 3rd=credit, 2nd=smart card?
134 0x86 Expanded Card Table (32 Entries) 1152 HOTRNG
93 0x5d Smart Card Parameters Table 224 Hex data
92 0x5c 200 Number Call Screening List P2-277

(RDLIST?)

3060 Flags:

0x00=unused

0x01=Toll Free

0x41=Information

0x81=Operator

Japanese VFD Text 8000 Japanese: V1.3 Only

0x7A001 offset in U2 ROM.

86 0x56 Expanded Visual Prompts Language B 8000 Spanish: V1.3 Only

Qty 400: 20-line VFD strings

0x77001 offset in U2 ROM.

French VFD Text 8000 French: V1.3 Only

0x74001 offset in U2 ROM.

85 0x55 Expanded Visual Prompts Language A 8000 English: V1.3 Only

Qty 400: 20-line VFD strings

0x71B5A offset in U2 ROM.

73 0x49 Rate Table 1191 RATE
72 0x48 Spare Table (LCD?) 1000 Almost all 00, except one block of hex data. NOTE: This is a required table for V1.3 PCP, but not used on V1.0.
62 0x3e Numbering Plan Table 352 More hex data
60 0x3c Terminal SW Version 27 TSWVERS
58 0x3a Service Level Table 25 All 00’s.
55 0x37 Enhanced Repertory Dialer List 570 RDLIST 10 rows of 57 bytes
50 0x32 Coin Validation Table 104 COINVL
35 0x23 Time/Call-In Parameters 20
34 0x22 Call / Carrier Statistics Parameters 18 CALLST
33 0x21 Modem Configuration Parameters 35 MODEM (Modem Parameters)
32 0x20 Communication Statistics and Configuration Parameters 32 COMMST
31 0x1f Installation/Servicing Parameters 36 INSTSV Access Code In first 7 nibbles.
30 0x1e User Interface Parameters Universal 67 USERPRM (User Interface Parameters)
29 0x1d Advertising Prompts

seq, text, duration(2), effects

480 ADMESS

Text info about rates for local and anywhere in the US Calls. 20 entries.

26 0x1a Feature Configuration – Universal 71 FEATRU
21 0x15 Terminal Access Parameters 47 TERM Contains our number and primary/sec NCC#, call in start date, time, interval, CDR threshold.
13 0xd End of Data Message 0 Manager sends no data.
10 0xa Terminal Status 10 5 byte serial number, 5 byte TSTATUS register.

Low-Level Protocol

The low-level protocol sent over the modem is a stream of bytes framed within START and END bytes.

START FLAG Byte LEN (includes END) DATA CRC-16 END
02 1-byte 1-byte N bytes... 2-bytes * 03

*CRC-16 IBM with A001 polynomial per this site. Includes all bytes including START through the DATA.

FLAG Bits:

7 6 5 4 3 2 1 0
? ? DISCONNECT ? ACK RETRY Sequence

Separate sequence numbers are counted for each of tx_seq and rx_seq. ACKs should always be sent with the same sequence as the last received Rx packet. Tx seq is incremented after every successful packet transmission, and reset when the terminal disconnects.

References

Nortel Millennium on Wikipedia

Chaos Computer Club Muenchen

muccc / millennium on GitHub

About

Manager for the Nortel Millennium series of payphones.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.6%
  • Makefile 1.4%