Last week, I received an item I have been looking for for a long time.
As I have mentioned in other posts, my museum speciallizes in Nortel,
Northern Telecom, GTE/AE, and other phones which were used in Canada.
Along with the usual collection of 3 slot phones, I wanted to bring it
up to date by displaying a Millenium (now made by Quortech).
Problem is, it may be nearly impossible to get it doing anything, as
the Millenium is probably the most secure payphone on the planet. It
calls home to the Millenium Manager for just about everything :-)
The Millenium is a common site today on the Island, and indeed in much
of Canada and the U.S.
This is a so-called BOCOT/COCOT "Smart Phone", featuring a digital
instruction display, adjustable volume, options accepting credit and
calling cards, coins of 5, 10, 25¢, and dollar. Originally developed
by Northern Telecom (Nortel), and typical phones of the series carry
the designation, NT5U411BA2011 R11(Just an example of the numbering
from a Millenium shipping box I have). Loved by operating companies,
and despised by phone phreaks (telephone hackers), the Millenium
series are the most advanced payphones in the world.
The Millenium is the also most secure payphone on the market and to
keep it that way, information on the phone is very hard to find,
though I have found a manual for it. Only details which are publicly
available on the phone will be noted here. Millenium phones call daily
to their "hive" and contain internal alarms to monitor activity on the
phone. Dial tone heard when the handset is raised is computer
generated, and the rate tables are contained within the phone and
programmed and updated by the Millenium manager. A scrolling
advertising line on the phones may also be programmed via the
Millenium Manager to show up to 20 advertisements on the display's
second line. The Manager can provide constant checks of the phone
right down to the number and denominations of coins in the box, credit
card verification, self-diagnostics, logging of operational notes such
as cleaning and delivery directory dates, and detailed call activity
statistics which may be used for planning.
The Millenium is available with or without a smart card reader or a
multicard reader option allowing users to use magnetic stripe
commercial credit cards, calling cards and smart cards / chip cards,
and with an optional jack which allow users with portable computers to
connect through the phone. The options are seemingly endless.
What I would like to achieve eventually is to be able to display it
with a functioning display, and with "Welcome to the Telephone Museum
of Prince Edward Island" scrolling in its advertising line, and let
the visitors to the museum hear its internally generated dial tone and
voice announcements. Short of subscribing to a Millenium Manager
Service, I will eventually figure something out, but wonder if someone
has solved this problem, perhaps with manual re-programming of its
eproms?
If anyone has any suggestions, I would love to hear from you. I do
have an Ernest based phone in the half booth in the muesum entranceway
where people can play with its announcements, etc. It would be nice if
I could eventually do the same with the Millenium. For now, it will be
a static display...
Thanks,
Dave
Eww, what a hacky solution.
> If anyone has any suggestions, I would love to hear from you. I do
> have an Ernest based phone in the half booth in the muesum
> entranceway where people can play with its announcements, etc. It
> would be nice if I could eventually do the same with the
> Millenium. For now, it will be a static display...
A quick google search for 'nortel millennium payphone manager' turns
up the page <https://www.defcon.org/html/links/dc_press/archives/5
/teklordwriteup.htm>, which has the following passage:
> Also, the Millenniums have a lot of programming features. The
> default password to access them is CRA-SERV (type it when the phone
> is hung up). I don't know how to enter commands, but I'm trying to
> get a Millennium Programming Manual from Nortel. For some reason,
> they don't seem to want to sell me one.
>
> Finally, Nortel's digital payphones have an internal 1200 baud modem
> to interface with it on a standard telephone line. The problem is
> that I don't have any numbers to test it with. If you get some, try
> the Payphone Manager that Cathode Ray is distributing at
> http://members.xoom.com/ray_dios_haque/
Unfortunately, that URL is now gone and neither the Wayback Machine
nor Google has a cached copy.
When you dial a non-local number on this phone, it calls home with its
modem to check the rate before dialing. Have you determined what
number it calls? That might be a useful start.
--
Duncan Smith --------\ http://students.washington.edu/f/ /---
() ascii ribbon \--- Signed/encrypted mail preferred ---/
/\ campaign [ against html mail ] [ support open formats ]
I don't think you should consider the following too seriously unless you have
more than one of those units but it sort of parallels a situation we have here
in Melbourne.
We were given two first generation (?) internet kiosk / payphone units.
Apparently about 60 of these units were made here but very few were put into
service in their lifetime. The units are basically a 'bullet-proof' payphone
housing with 15 inch touch screen / handset / thermal printer / credit and
calling card slot, no coin capability.
Similar to the Nortel unit they were designed to connect back to a server type
controller via DSL data link and telephony was through a standard PSTN line. As
we didn't get the server there was not I lot I could do to make them function
as a pay-phone in their own right.
However the internals were basically a stock standard Pentium PC running
Windows NT. In the end I changed out the hard disk (just in case we ever do get
the server software) and loaded a fresh copy of NT and turned the unit into an
interactive display unit.
While I don't have any knowledge of the Nortel unit it might be possible to
'gut' the existing internals of yours (and preserve them) and replace them with
a simpler display controller and maybe with some sort of RVA on the handset.
(Alas the PC units in ours seem to have both gone a bit flaky so my next trick
will be to either repair those units or graft more modern internals in them -
without changing the external appearance.)
Regards
Richard
-----Original Message-----
Subject: [Telecom_Museum] Has Anyone Found a Good Way to Display a
Millenium Payphone?
Hi All:
Last week, I received an item I have been looking for for a long time.
As I have mentioned in other posts, my museum speciallizes in Nortel,
Northern Telecom, GTE/AE, and other phones which were used in Canada.
Along with the usual collection of 3 slot phones, I wanted to bring it
up to date by displaying a Millenium (now made by Quortech).
...<snip>...
The Millenium doesn't have a hard drive, though - all programming is
contained on eeroms, programmed from the Millenium manager - this
includes languages, rate tables etc.
So, either I would have to gut it (a no-no) and make it into a 500 set
(which I don't want to do), or find some way to modify its
programming, or find a helpful Millenium manager operator :-)
Dave
> Dave- Hide quoted text -
>
> - Show quoted text -
I now have the Millenium Payphone display set up, and have an Island
Tel Bezel and instruction card on the phone. It still displays
nothing
more than the "** out of service **" message, and won't until I
figure
a way to mimic the actions of the NCC (Millenium Manager), but it
does
make an effective display. I have posted an image of the phone to the
photo section under nevadamill.jpg title.
Dave
On Jun 21, 9:44 am, "Richard Schipper" <bigstacheb...@gmail.com>
wrote:
> Understand Dave,
>
> I was just lucky with the unit here. Will post a pic of it in the files
> section when I get a chance, not enough hours in a day.
> Remeber, there's nothing wrong with static displays !
>
> Richard
>
> > > - Show quoted text -- Hide quoted text -
Hello, I am sorry to kick up an old thread. However I have contacted a few people on this forum looking to find out if they have had any success with getting the CU2002626SCPB-T23A (The display in a Nortel Millennium Payphone) to work. So far no responses. This information provided here would have saved me weeks! For this reason I am providing my results that I had to start from scratch to get. I will post the link to my website explaining how to convert the payphone you find these screens in and turn it into a functional analog phone with all working functions, including coin validator.
Dont contact me looking for parts, I am just supplying information. I will say that I got mine by finding a payphone service company in town and asking one of the installers. These phones are most common in Canada. It is the Nortel Millennium payphone. (This guy has some info on these phones: http://www.islandregister.com/phones/millenium.html)
I have it working, I have found almost all the functions, still working on all the modes: Excerpt from my website, incase the link goes stale (I will provide the link in my next post):
The VFD found on the Nortel payphones are a custom screen, not completely unique but everything that is important has had some minor change to it. One of the contributors to this put it best "It seems like it just didnt do what Nortel wanted, so they had Noritake remove all the instructions and let nortel do it manually". In this particular case, we will be talking about the Noritake CU20026SCPB-T23A. This units pin out is as follows:
Note: I use 26,24,22 as GND and 2,4,6 as +5v out from Arduino (Do not use a data pin, it wont sync enough current).
GND: 22,24,26 (untested: 12,14,16,18,)
+5vDC: 2,4,6 (untested: ,8,10) (Draw is approximately 300ma)
Logic: (all X pins are only labeled X because I don't know what the official name is).
25 = (X4)
23 = (X3)
21 = (X2)
20 = Reset (X6)
19 = Commit Change (X1)
17 = Data 1
15 = Data 2
13 = Data 3
11 = Data 4
9 = Data 5
7 = Data 6
5 = Data 7
3 = Data 8
A url with a mostly acurate character map is:
http://www.vfdworld.com/techdocs/Nor...A_4x20_VFD.pdf
but again who knows how long it will be available, hopefully long enought that archive.org will get it. Looks like Nortel would manually Draw the characters they needed that didnt fit what was in the map. To find out what was in the map I just built a loop to dump ascii in to the screen. KEEP IN MIND, this will mean you can accidently change the mode and need a payphone to get it back to the right mode (at least for now.) so make sure you start from ascii Decimal "32" and go up, all control characters are below that. The only one that messed up one of the contributors was "31".
Ascii control characters:
10 - Line Feed
13 - Carriage return
12 - Clear screen
19 - Cursor visible
20 - Cursor invisible
18 - Scrolling text mode off
21 - Scrolling text mode on
17 - [nothing so far]
This code sample is for an Arduino, but you will get the basic idea if you decided to attach it to a computer. This will be turned in to a library at some point in the future.
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//// ////
//// VFD Test Code for CU20026SCPB-T23A ////
//// Author: Wes D & Mark M ////
//// Date: 2/17/2014 ////
//// Version: 1.00 ////
//// Platform: Arduino Mega 2560 ////
//// ////
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
// These pins are based on a Arduino Mega 2560. But can be run on any Arduino
// with enough pins. And just to be clear, this could just as easily be run on a Pic
// or Pi or Beagle, you name it.
// Name / Arduino pin / Pin on VFD
#define d0 22 //Pin 15 on VFD
#define d1 24 //Pin 13 on VFD
#define d2 26 //Pin 11 on VFD
#define d3 28 //Pin 9 on VFD
#define d4 30 //Pin 7 on VFD
#define d5 32 //Pin 5 on VFD
#define d6 34 //Pin 3 on VFD
#define d7 36 //Pin 1 on VFD
#define x1 38 //Pin 17 on VFD
#define x2 40 //Pin 19 on VFD
#define x3 42 //Pin 21 on VFD
#define x4 44 //Pin 23 on VFD
#define x5 46 //Pin 25 on VFD
#define x6 48 //Pin 20 on VFD
int scrollDelay;
void setup() {
pinMode(d0,OUTPUT);
pinMode(d1,OUTPUT);
pinMode(d2,OUTPUT);
pinMode(d3,OUTPUT);
pinMode(d4,OUTPUT);
pinMode(d5,OUTPUT);
pinMode(d6,OUTPUT);
pinMode(d7,OUTPUT);
pinMode(x1,OUTPUT);
pinMode(x2,OUTPUT);
pinMode(x3,OUTPUT);
pinMode(x4,OUTPUT);
pinMode(x5,OUTPUT);
pinMode(x6,OUTPUT);
pinMode(12,OUTPUT);
//Default States
digitalWrite(12, HIGH);
digitalWrite(d0, HIGH);
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
digitalWrite(d5, HIGH);
digitalWrite(d6, HIGH);
digitalWrite(d7, HIGH);
digitalWrite(x1, HIGH);
digitalWrite(x2, LOW);
digitalWrite(x3, HIGH);
digitalWrite(x4, LOW);
digitalWrite(x5, HIGH);
digitalWrite(x6, LOW);
}
void vfdreset() {
//According to an anonymous source, this needs to be done once and a while because of corrupt
//characters appearing on the screen. We have confirmed this. The reset is very fast, you can
//shorten the delays a bit, but you will have to play around to see what works for you.
digitalWrite(x6, HIGH);
delay(2);
digitalWrite(x6, LOW);
delay(10);
}
void vfdtest() {
//This will kick off the VFD internal test. Basically just steps through all the characters
//built in to the display.
//Procedure is, hold x5 (VFD Display pin 25) low for 100ms during a reset. Reset does not start until x6 (VFD Display pin 20) is low again.
digitalWrite(x5,LOW);
digitalWrite(x6,HIGH);
delay(50); //This can be shorter, but best results showed this was good.
digitalWrite(x6,LOW);
delay(100); //NO TOUCHY!
delay(15000); //This counter is running while the test sequence is running. Make this longer if you like, the display will keep looping the test until you restart
digitalWrite(x6, HIGH);
delay(10);
digitalWrite(x6, LOW);
digitalWrite(x5, HIGH);
}
void loop() {
scrollDelay = 1;
vfdreset();
delay(200);
writeCharacter(20u);
delay(200);
writeCharacter(18); //Turn off Scroll Mode
writeCharacter('P');
writeCharacter('l');
writeCharacter('e');
writeCharacter('a');
writeCharacter('s');
writeCharacter('e');
writeCharacter(' ');
writeCharacter('l');
writeCharacter('i');
writeCharacter('f');
writeCharacter('t');
writeCharacter(' ');
writeCharacter('r');
writeCharacter('e');
writeCharacter('c');
writeCharacter('e');
writeCharacter('i');
writeCharacter('v');
writeCharacter('e');
writeCharacter('r');
writeCharacter(13);
writeCharacter(21); //Turn on scroll mode
for (int i = 0;i < 200; i++) { //This will prevent the re-write of line one and excessive screen resets.
scrollDelay =150; //Slow down the scroll speed.
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter('H');
writeCharacter('e');
writeCharacter('l');
writeCharacter('l');
writeCharacter('o');
writeCharacter(' ');
writeCharacter('W');
writeCharacter('o');
writeCharacter('r');
writeCharacter('l');
writeCharacter('d');
writeCharacter(',');
writeCharacter(' ');
writeCharacter('H');
writeCharacter('o');
writeCharacter('p');
writeCharacter('e');
writeCharacter(' ');
writeCharacter('y');
writeCharacter('o');
writeCharacter('u');
writeCharacter(' ');
writeCharacter('e');
writeCharacter('n');
writeCharacter('j');
writeCharacter('o');
writeCharacter('y');
writeCharacter(' ');
writeCharacter('t');
writeCharacter('h');
writeCharacter('i');
writeCharacter('s');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter('P');
writeCharacter('u');
writeCharacter('t');
writeCharacter(' ');
writeCharacter('a');
writeCharacter(' ');
writeCharacter('l');
writeCharacter('o');
writeCharacter('o');
writeCharacter('n');
writeCharacter('i');
writeCharacter('e');
writeCharacter(' ');
writeCharacter('i');
writeCharacter('n');
writeCharacter(' ');
writeCharacter('t');
writeCharacter('h');
writeCharacter('e');
writeCharacter(' ');
writeCharacter('s');
writeCharacter('l');
writeCharacter('o');
writeCharacter('t');
writeCharacter(' ');
writeCharacter('f');
writeCharacter('o');
writeCharacter('r');
writeCharacter(' ');
writeCharacter('t');
writeCharacter('h');
writeCharacter('e');
writeCharacter(' ');
writeCharacter('d');
writeCharacter('a');
writeCharacter('n');
writeCharacter('c');
writeCharacter('i');
writeCharacter('n');
writeCharacter('g');
writeCharacter(' ');
writeCharacter('g');
writeCharacter('i');
writeCharacter('r');
writeCharacter('l');
writeCharacter('s');
writeCharacter('.');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
writeCharacter(' ');
delay(5000);
}
}
void writeCharacter(byte v) {
digitalWrite(x1, LOW); //Prepare to write
digitalWrite(d0, bitRead(v,7));
digitalWrite(d1, bitRead(v,6));
digitalWrite(d2, bitRead(v,5));
digitalWrite(d3, bitRead(v,4));
digitalWrite(d4, bitRead(v,3));
digitalWrite(d5, bitRead(v,2));
digitalWrite(d6, bitRead(v,1));
digitalWrite(d7, bitRead(v,0));
digitalWrite(x1, HIGH); //Write Complete
delay(scrollDelay);
}
I sure hope this helps you as much as it would have helped me...
Hi There:
I would be interested in any further information you could give... I wonder if anyone has done this with a Paspberry PI, as I have a couple of unused PIs here...
Dave