1827847 Members
2137 Online
109969 Solutions
New Discussion

Phone Utility

 
SOLVED
Go to solution
The Brit
Honored Contributor

Phone Utility

OpenVMS 8.3-1H1 on BL860c blade cluster using DECNet Phase V and DECNet-over-IP.

When I enter

$ Phone BAXTERD

I get:-

OpenVMS Phone Facility 12-NOV-2009
%
That person's terminal cannot be used as a telephone.
-------------------------------------------------------------------------------
BUD::SYSDAB

Any idea of the cause, or resolution for this??

Note: BAXTERD is logged in on the same node.

Dave.
32 REPLIES 32
Jon Pinkley
Honored Contributor

Re: Phone Utility

Can you have BAXTERD do sho show term/full
and provide the output?

In V7.3-2 if the terminal is set /nobroadcast
of has used

$ set broadcast=nophone

Then it will display

That person's phone is unplugged (/NOBROADCAST).

But that's a different message than you are reporting.

I just searched sys$system:phone.exe on a 8.3 alpha, using Hein's STRINGS program, and I don't see any strings that match the string. In fact using search doesn't find the string "telephone".

Are you sure you are using the real phone.exe from VMS?

$ sho sym phone ! make sure it isn't doing something funny
$ sho log phone
$ ! if you have the verb utility, verify that phone is using image phone

$ analyze/image/select=(id,build,link) 'f$parse("phone","sys$system:.exe")'

Jon
it depends
Hoff
Honored Contributor

Re: Phone Utility

Some related reading on getting PHONE to work, and some alternatives that are available:

http://labs.hoffmanlabs.com/node/1091
Hein van den Heuvel
Honored Contributor

Re: Phone Utility


You get that message when the terminal is not a CRT.

I just tried with SET TERM/LA36 and got that.

On the terminal itself you get
%PHONE-F-BADTERM, you cannot use this type of terminal as a telephone

For me the fix is: $SET TERM/INQ

Cheers,
Hein.

Jon Pinkley
Honored Contributor

Re: Phone Utility

Dave,

Give Hein 10 points.

The reason STRINGS and SEARCH didn't find the text is becaue these messages are in the sys$message:cliutlmsg.exe file.

Jon
it depends
The Brit
Honored Contributor

Re: Phone Utility

Thanks for your suggestions guys, unfortunately, nothing helped so far.

Some additional information:

1. Have 4 node cluster, 3 blades sharing 8.3-1H1 system disk, and DS10 using its own system disk. Also have 3 external standalone development blade systems (8.3-1H1).

2. The problem only manifests itself when one (or both) of the communicating systems is/are a production cluster blade. The phone utility is working fine between the standalone systems.

As Hoff will probably remember, we had some issues with networking back in Feb, when we first migrated to blades, and as part of the troubleshooting process we trimmed the DECNet Phase V configuration to the absolute minimum, basically reducing all of the references to a single interface. This primarily affected the net$routing_startup.ncl file, and the net$cmsacd_startup.ncl file.

Once the problem was resolved, we were a bit wary about putting the files back, so they have remained as they were.

I suspect that this is a part, if not all of the problem.

Does this make any sense, or explain anything in the context of the "Phone" issue??

Dave.
Hein van den Heuvel
Honored Contributor

Re: Phone Utility


When you do a $ SHOW TERM in the target session, what does it indicate?

When you just launch $ PHONE in the target sesssion without a user to phone, what does it report? Does the phone screen appears, or the message I indicated earlier?

Hein.
Hoff
Honored Contributor

Re: Phone Utility

> Does this make any sense, or explain anything in the context of the "Phone" issue??

No, and No. :-)

SHOW TERMINAL on the target session on the target host. Is the target session marked as a DECCRT-class terminal? If not, then PHONE won't work.
The Brit
Honored Contributor

Re: Phone Utility

Hein, Hoff,

In the attachment I have added the information you were asking for.

Basically, between my development machines, Phone is working fine, so I have to assume that the terminal setups on those machines are also fine.

I then matched the production terminal setup to the development machines, (which did require some changes to the DEC_CRT3 and DEC_CRT3 settings), and I get the following results.

When I Phone out from Prod to Dev:

Appears to work OK, i.e. the " is phoning you..." message appears on Dev Session, however when I try to answer I get;

"Attempting to continue after a transmission error..."

When I Phone from Dev to Prod, or from Prod to Prod, I get;

"That person's terminal cannot be used as a telephone."


Dave

Volker Halle
Honored Contributor

Re: Phone Utility

Dave,

a quick look in the sources indicates: PHONE is looking for TT$M_SCOPE, if that fails, it will issue the 'targterm' message.

If DECnet links are involved, there is a mapping between various status codes to 'universal' codes, this code is more complicated to look at...

Volker.
Hoff
Honored Contributor

Re: Phone Utility

PHONE is bog-standard DECnet task-to-task communications; there's not all that much that can go wrong.

See if the PHONE servers are enabled and active in the DECnet configurations and if the passwords are correct across the hosts involved.

As for transmission errors...

First, see if PHONE works locally; on the box.

Here's PHONE on a nearby OpenVMS box...

Object = PHONE

Number = 29
File id = SYS$SYSTEM:PHONE.EXE
User id = PHONE$SERVER
Proxy access = incoming and outgoing
Alias outgoing = Disabled
Alias incoming = Enabled

To see details in NCL:

NCL>sho sess control application phone all

Node names and back-translations are also something to check; that the hosts all have the same set of node names. If the nodes disagree on DECnet names and addresses, confusion can ensue.

Check accounting or auditing for failures around the time of the transmission errors, too.

Privileges? I'd expect at least NETMBX and possibly or probably TMPMBX.

Configuring Jabber or IRC or other such IM tools on your client boxes would seem to be an alternative, too; PHONE hasn't seen much in the way of changes in eons.
Volker Halle
Honored Contributor

Re: Phone Utility

Dave,

how about PHONE operations involving DECnet links, like %DIR node:: ? Do they all work as expected ?

Volker.
Volker Halle
Honored Contributor

Re: Phone Utility

Dave,

the PHONE network protocol just seems to send 1 byte of data (using io$_writevblk) as the 'universal status' value for a remote operation:

phn$_linkerror -> send '0'
phn$_targterm -> send '7'

One of the other universal status values, which can easily be reproduced is '9' which maps to 'hn$_unplugged'. Can you try, if this works correctly ? Have a remote user issue a SET TERM/NOBRADCAST=PHONE and dial it using node::user, you should get the 'unplugged' message.

Did you check, whether is makes any difference, if the DECnet goes via native DECnet protocol or via DECnet-over-ip ?

Volker.
The Brit
Honored Contributor

Re: Phone Utility

See new attachment.

1. Phone setup in NCP and NCL looks to be correct.

2. DECLinks (i.e. %DIR ::) works fine in all directions and between all systems.

3. Setting broadcast=nophone did not give the "unplugged" message, just gave the same "...terminal cannot be used as a telephone." message.

4. I'm not in a position to try Phase IV, I only have Phase V nodes.

5. "Node names and back-translations". What would be the best way to confirm this?

Dave.
Volker Halle
Honored Contributor

Re: Phone Utility

Dave,

does the following message always show up in NET$SERVER.LOG on the remote node, if you get the phn$_targterm error message ?

%SYSTEM-W-NOSUCHDEV, no such device available
That person's terminal cannot be used as a telephone.

Then the next question would be, which operation may fail with NOSUCHDEV and could this failure then be mapped to the 'phn$_targterm' status message.

To find out, whether DECnet-over-IP is being used, do a $ SET HOST node, login and check, whether you see an IP connection to ports 102 or 399 from your source node.

Volker.
The Brit
Honored Contributor

Re: Phone Utility

HI Hein,

I tested DECNet over IP, as you suggested, (see attachment). Looks like it is working.

As for the error message, I dont recall seeing any other message in the NET$SERVER.LOG.

Dave.
Volker Halle
Honored Contributor

Re: Phone Utility

Dave,

assuming that the users are connecting via TELNET, what do the TNA device unit numbers look like ? Maybe greater than 9999 ?

Volker.
The Brit
Honored Contributor

Re: Phone Utility

Hi Hein,

I think you might be getting warm. On Bud, (the production machine)

Bud:BaxterD>> show proc

14-NOV-2009 09:13:20.01 User: BAXTERD Process ID: 203BB516
Node: BUD Process name: "BAXTERD"

Terminal: TNA47274: (Host: 10.20.22.110 Port: 2565)
User Identifier: [BAXTERD]


????

Dave
Base priority: 4
Default file spec: USERROOT:[BAXTERD]
Number of Kthreads: 1

Devices allocated: TNA47274:

whereas on the development machine,

Oesdev:BaxterD>> show proc

14-NOV-2009 09:16:03.98 User: BAXTERD Process ID: 000048F9
Node: OESDEV Process name: "BAXTERD"

Terminal: TNA226: (Host: 10.20.22.110 Port: 2571)
User Identifier: [125H,BAXTERD]
Base priority: 4
Default file spec: USERROOT:[BAXTERD]
Number of Kthreads: 1

Devices allocated: TNA226:

Volker Halle
Honored Contributor
Solution

Re: Phone Utility

Dave,

it's me: Volker ;-)

It's not only getting warm, it's getting HOT !

Consider to have a look at this thread:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=1074590

Volker.
The Brit
Honored Contributor

Re: Phone Utility

Volker,
Thank you, Thank you, Thank you.

I am certain that this is the problem, (and I apologise for keep calling you "Hein")

Old age I'm afraid. I can either concentrate on who I'm talking to, or I can concentrate on the problem, unfortunately not both. (never used to be like that!)

I will need to discuss with my compatriots regarding what they need most, i.e. large numbers of tna/bg devices, or the phone utility. I imagine that the Phone Utility will be the thing to go.

Thanks again

Dave.

The Brit
Honored Contributor

Re: Phone Utility

Thanks to Volker, for supplying a link to an old thread which didn't come up, or which I must have missed, on my original search.

Dave
Volker Halle
Honored Contributor

Re: Phone Utility

Dave,

I believe, I've found the real error in the PHONE utility. If you have a support contract with HP, please consider to log a call:

There is a $GETJPI call in [PHONE]LINKSUBS, which specifies - among others - the following item code:

...
word(7),word(jpi$_terminal),
long(term_number+8),
long(term_number)
...

The '7' is supposed to be the output buffer length for the terminal name (TNAxxxx will fit, but TNAxxxxx will NOT !). And the term_number in this routine is only 7 bytes long, so this cannot be easily fixed by PATCH

The OpenVMS V8.3 Release notes describe the the change of the field PCB$T_TERMINAL from 8 to 16 bytes in V8.2. It also suggests to increase the buffer specified for the JPI$_TERMINAL item code to 16 bytes !

So fixing this bug in PHONE would be a nice task for an OpenVMS engineering newhire after his first lesson in BLISS ;-)

Volker.
Volker Halle
Honored Contributor

Re: Phone Utility

Dave,

this can be PATCHED !

$ PATCH X.EXE ! a private copy of PHONE.EXE
PATCH>exa 800+124
00000924: 00000007
PATCH>dep/long .=8
old: 00000924: 00000007
new: 00000924: 00000008
PATCH>update
%PATCH-I-WRTFIL, updating image file X.EXE;2
PATCH> EXIT

This static data is in an OCTAWORD aligned PSECT:

.PSECT $OWN$, OCTA, NOPIC, CON, REL, LCL, NOSHR,-
NOEXE, RD, WRT
USER_NAME:
010C .LONG X^C ; .LONG 12
0110 .LONG USER_NAME+8
TERM_NUMBER:
0124 .LONG X^7 ; .LONG 7
0128 .LONG TERM_NUMBER+8
PATH_LIST:
0134 .SIGNED_WORD X^0 ; .SIGNED_WORD 0

At offset 0x0124, you'll find the '7' for the buffer length. The address of the start of the TERM_NUMBER buffer can be found at offset 0x0128. The string buffer itself starts at 0x012C. Due to the OCTAword alignment, the buffer is actually 8 bytes long not 7 bytes ! The next data structure starts at 0x0134. So all that needs to be done is change the '7' to '8', to at least provide a buffer of 8 characters for the TERM_NUMBER, so that TNAxxxxx will fit ! To find the longword '7' at offset 0x0124, you'll have to DUMP PHONE.EXE and look for '00000007' at offset 0x124 inside a block. For me, this is VBN 5. You can easily verify, that you've found the correct block, if there is a '0000000C' at offset 0x010C in the same block.

Feel free to give it a try, you will have to INSTALL REPLACE the patched PHONE.EXE...

The usual disclaimer: use at your own risk ;-)

Volker.
Hein van den Heuvel
Honored Contributor

Re: Phone Utility

Rainy Saturday afternoon...

>> And the term_number in this routine is only 7 bytes long, so this cannot be easily fixed by PATCH

The bliss compiler of course aligned the next variable, so there are actually 8 bytes available :-)

A patch would be restricted to 2(4) relatively easy recognizable words:
- the 7 in the descriptor
- the 7 in the getjpi item list.

Dump and search for " 00000007 00000000" and
for 031D0007 :-)

00000000 004C .LONG USER_NAME
0004 0050 .SIGNED_WORD X^4 ; .SIGNED_WORD 4
0303 0052 .SIGNED_WORD X^303 ; .SIGNED_WORD 771
00000000 0054 .LONG PARENT_PID
00000000 0058 .LONG X^0 ; .LONG 0
0007 005C .SIGNED_WORD X^7 ; .SIGNED_WORD 7
031D 005E .SIGNED_WORD X^31D ; .SIGNED_WORD 797
00000008 0060 .LONG TERM_NUMBER+8
00000000 0064 .LONG TERM_NUMBER

:

00000007 0124 .LONG X^7 ; .LONG 7
00000008 0128 .LONG TERM_NUMBER+8
PATH_LIST:
0000 0134 .SIGNED_WORD X^0 ; .SIGNED_WORD 0


Also, in module MISCCMDS the terminal length was actually increased from 7 to 9. Too bad they did not cover all at that time.

! V04-001 ROP0040 09-OCT-1984
! Extend field for terminal name from 7 to 9 in
! directory listing.
!

Hein.
Volker Halle
Honored Contributor

Re: Phone Utility

Early sunny sunday morning over here ;-)

There are actually 4 different places in PHONE, where the terminal name is being obtained using $GETJPI and a JPI$_TERMINAL item code:

- BASICCMDS using a buffer length of 7
- LINKSUBS using a buffer length of 7
- MISCCMDS using a buffer length of 9
- TERMINAL using a buffer length of 64 - WOW !

The first 2 occurences could easily be found and patched with PATCH.

I'll report this, when 8.4 fieldtest finally comes around...

Volker.