NI 2100 controller locks
danialkhatib
Posts: 2
in AMX Hardware
Hi,
I have a problem with 7 NI 2100 controllers. They work well during approx 2 weeks than they are not controlling the atached devices anymore. It is very strange because I'm able to diagnose that commands are sent and received via Netlinx studio and the led light are flashing properly.
When I recompile my program and send it back, everything works fine again for approx 2 weeks.
There are few devices in this installation. Two samsung led displays controlled in RS 232 and one Cisco C20 codec controlled via IP.
Amx firmware version :
C20 Softwear version : TC 5.1.4.295090
Thanks for your support,
I have a problem with 7 NI 2100 controllers. They work well during approx 2 weeks than they are not controlling the atached devices anymore. It is very strange because I'm able to diagnose that commands are sent and received via Netlinx studio and the led light are flashing properly.
When I recompile my program and send it back, everything works fine again for approx 2 weeks.
There are few devices in this installation. Two samsung led displays controlled in RS 232 and one Cisco C20 codec controlled via IP.
Amx firmware version :
C20 Softwear version : TC 5.1.4.295090
Thanks for your support,
0
Comments
First try telnetting into he processor. Once in type MSG ON ALL.
See if there are any runtime errors.
Also type GET BUFFERS and see if you have any overruns.
Report back on your findings.
E
Here is the program of AMX :
What is your opinion ?
and about the IP_CLIENT_OPEN line...?
PROGRAM_NAME='A555'
(***********************************************************)
(* System Type : NetLinx *)
(***********************************************************)
(* REV HISTORY: *)
(***********************************************************)
(***********************************************************)
(* DEVICE NUMBER DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_DEVICE
dvLed1 = 5001:1:1 //Samsung LH46 9600 8N1
dvLed2 = 5001:2:1 //Samsung LH46 9600 8N1
dvCodec = 0:3:0 //Tandberg C90 IP 192.168.1.123
dvRelay = 5001:8:1 //Relay card
dvTp = 128:1:1 //Modero NXT-CV7
(***********************************************************)
(* CONSTANT DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_CONSTANT
Rack = 3
(*** IP RELATED CONSTANTS ****)
TCP = 1
UDP = 2
CodecPort = 23
(***********************************************************)
(* DATA TYPE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_TYPE
(***********************************************************)
(* VARIABLE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_VARIABLE
char FromCodec[250]
Tandberg_Connected
CodecBuffer[255] // FOR READING VISIO STRINGS
volatile char cDISP_TEXT[20] = '' // STORES THE TEXT TO BE SEND TO THE TOUCHPANEL
SystemOn
//Start exit
devchan Powering [] =
{
{dvTp , 1}, //Start
{dvTp , 2} //Reset
}
//Codec
devchan Codec [] =
{
{dvTp , 464}, // Call
{dvTp , 465}, // HangUp
{dvTp , 467}, // Directory
{dvTp , 469}, // Layout
{dvTp , 453}, // Key1
{dvTp , 454}, // Key2
{dvTp , 455}, // Key3
{dvTp , 456}, // Key4
{dvTp , 457}, // Key5
{dvTp , 458}, // Key6
{dvTp , 459}, // Key7
{dvTp , 460}, // Key8
{dvTp , 461}, // Key9
{dvTp , 452}, // Key0
{dvTp , 451}, // Key*
{dvTp , 450}, // Key#
{dvTp , 472}, // Home
{dvTp , 473}, //
{dvTp , 474}, //
{dvTp , 475}, //
{dvTp , 476}, //
{dvTp , 477}, //
{dvTp , 478}, //
{dvTp , 479}, //
{dvTp , 480}, //
{dvTp , 481}, //
{dvTp , 482}, //
{dvTp , 483}, //
{dvTp , 484}, //
{dvTp , 485}, //
{dvTp , 486}, //
{dvTp , 487}, //
{dvTp , 488}, //
{dvTp , 489}, //
{dvTp , 490}, //
{dvTp , 491}, //
{dvTp , 492}, //
{dvTp , 493}, //
{dvTp , 494}, //
{dvTp , 495} //Cancel
}
(***********************************************************)
(* LATCHING DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_LATCHING
(***********************************************************)
(* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *)
(***********************************************************)
DEFINE_MUTUALLY_EXCLUSIVE
(***********************************************************)
(* SUBROUTINE/FUNCTION DEFINITIONS GO BELOW *)
(***********************************************************)
(***********************************************************)
(* STARTUP CODE GOES BELOW *)
(***********************************************************)
DEFINE_START
CREATE_BUFFER dvCodec,CodecBuffer
(***********************************************************)
(* THE EVENTS GO BELOW *)
(***********************************************************)
DEFINE_EVENT
(***********************************************************)
(* data event section goes below *)
(***********************************************************)
Data_Event [dvLed1]
{
OnLine:
{
Send_Command data.device, "'SET BAUD 9600,N,8,1 485 DISABLE'"
}
}
Data_Event [dvLed2]
{
OnLine:
{
Send_Command data.device, "'SET BAUD 9600,N,8,1 485 DISABLE'"
}
}
Data_Event [dvCodec]
{
ONLINE:
{
ON[Tandberg_Connected]
IP_CLIENT_OPEN(dvCodec.PORT,'192.168.1.123',23,1)
}
OFFLINE:
{
OFF[Tandberg_Connected]
}
STRING:
{
FromCodec = DATA.TEXT
}
}
(***********************************************************)
(* button event section goes below *)
(***********************************************************)
button_event [Powering]
{
push:
{
switch (button.input.channel)
{
case 1 : //Start
{
cancel_wait 'rackoff'
send_command dvTp, "'TEXT1-System starting...'"
On[dvRelay, Rack]
On[SystemOn]
wait 50
{
send_string dvCodec,"'xcommand key Click Key:Home',$0D,$0A"
send_string dvLed1,"$AA,$11,$FF,$01,$01,$12"
send_string dvLed2,"$AA,$11,$FF,$01,$01,$12"
send_command dvTp, "'TEXT2-'"
send_command dvTp, "'PAGE-main'"
wait 20 send_command dvTp, "'TEXT2-'"
send_command dvTp, "'TEXT1-Press anywhere to start...'"
}
}
case 2 : //Reset
{
send_command dvTp, "'TEXT2-Push 2 seconds'"
}
}
}
release:
{
switch (button.input.channel)
{
case 2 : //Reset
{
send_command dvTp, "'TEXT2-'"
}
}
}
hold[20,repeat]:
{
switch (button.input.channel)
{
case 2 : //Reset
{
send_string dvLed1,"$AA,$11,$FF,$01,$00,$11"
send_string dvLed2,"$AA,$11,$FF,$01,$00,$11"
send_string dvCodec,"'xcommand Standby Activate',$0D,$0A"
send_command dvTp,"'PPON-Clear'"
send_command dvTp,"'TEXT3-'"
send_command dvTp, "'PAGE-welcome'"
Off[SystemOn]
wait 50 'rackoff'
{
Off[dvRelay, Rack]
}
}
}
}
}
//Codec
button_event [Codec]
{
push:
{
to [button.input]
switch (button.input.channel)
{
case 464 : { send_string dvCodec,"'xcommand key Click Key:Call',$0D,$0A" } // Call
case 465 : { send_string dvCodec,"'xcommand key Click Key:Disconnect',$0D,$0A" } // HangUp
case 467 : { send_string dvCodec,"'xcommand key Click Key:PhoneBook',$0D,$0A" } // Directory
case 469 : { send_string dvCodec,"'xcommand key Click Key:Layout',$0D,$0A" } // Layout
case 453 : { send_string dvCodec,"'xcommand key Click Key:1',$0D,$0A" } // Key1
case 454 : { send_string dvCodec,"'xcommand key Click Key:2',$0D,$0A" } // Key2
case 455 : { send_string dvCodec,"'xcommand key Click Key:3',$0D,$0A" } // Key3
case 456 : { send_string dvCodec,"'xcommand key Click Key:4',$0D,$0A" } // Key4
case 457 : { send_string dvCodec,"'xcommand key Click Key:5',$0D,$0A" } // Key5
case 458 : { send_string dvCodec,"'xcommand key Click Key:6',$0D,$0A" } // Key6
case 459 : { send_string dvCodec,"'xcommand key Click Key:7',$0D,$0A" } // Key7
case 460 : { send_string dvCodec,"'xcommand key Click Key:8',$0D,$0A" } // Key8
case 461 : { send_string dvCodec,"'xcommand key Click Key:9',$0D,$0A" } // Key9
case 452 : { send_string dvCodec,"'xcommand key Click Key:0',$0D,$0A" } // Key0
case 451 : { send_string dvCodec,"'xcommand key Click Key:Star',$0D,$0A" } // Key*
case 450 : { send_string dvCodec,"'xcommand key Click Key:Square',$0D,$0A" } // Key
case 472 : { send_string dvCodec,"'xcommand key Click Key:Home',$0D,$0A" } // Cancel
case 473 : { send_string dvCodec,"'xcommand key Click Key:Presentation',$0D,$0A" } // Presentation
case 474 : { send_string dvCodec,"'xcommand key Click Key:MuteMic',$0D,$0A" } // MuteMic
case 475 : { send_string dvCodec,"'xcommand key Click Key:VolumeUp',$0D,$0A" } // Volum+
case 476 : { send_string dvCodec,"'xcommand key Click Key:VolumeDown',$0D,$0A" } // Volum-
case 477 : { send_string dvCodec,"'xcommand key Click Key:Up',$0D,$0A" } // Up
case 478 : { send_string dvCodec,"'xcommand key Click Key:Down',$0D,$0A" } // Down
case 479 : { send_string dvCodec,"'xcommand key Click Key:Left',$0D,$0A" } // Left
case 480 : { send_string dvCodec,"'xcommand key Click Key:Right',$0D,$0A" } // Right
case 481 : { send_string dvCodec,"'xcommand key Click Key:Ok',$0D,$0A" } // Ok
case 482 : { send_string dvCodec,"'xcommand key Click Key:c',$0D,$0A" } // cancel
case 483 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 tilt:up',$0D,$0A" } //
case 484 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 tilt:down',$0D,$0A" } //
case 485 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 pan:left',$0D,$0A" } //
case 486 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 pan:right',$0D,$0A" } //
case 487 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 zoom:in',$0D,$0A" } //
case 488 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 zoom:out',$0D,$0A" } //
case 489 : { send_string dvCodec,"'xcommand key Click Key:Selfview',$0D,$0A" } // Selfview
case 490 : { send_string dvCodec,"'xcommand key Click Key:F1',$0D,$0A" } //
case 491 : { send_string dvCodec,"'xcommand key Click Key:F2',$0D,$0A" } //
case 492 : { send_string dvCodec,"'xcommand key Click Key:F3',$0D,$0A" } //
case 493 : { send_string dvCodec,"'xcommand key Click Key:F4',$0D,$0A" } //
case 494 : { send_string dvCodec,"'xcommand key Click Key:F5',$0D,$0A" } //
case 495 : { send_string dvCodec,"'xcommand key Click Key:C',$0D,$0A" } // Cancel
}
}
release:
{
switch (button.input.channel)
{
case 483 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 tilt:stop',$0D,$0A" } //
case 484 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 tilt:stop',$0D,$0A" } //
case 485 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 pan:stop',$0D,$0A" } //
case 486 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 pan:stop',$0D,$0A" } //
case 487 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 zoom:stop',$0D,$0A" } //
case 488 : { send_string dvCodec,"'xcommand camera ramp cameraId:1 zoom:stop',$0D,$0A" } //
}
}
}
(***********************************************************)
(* THE ACTUAL PROGRAM GOES BELOW *)
(***********************************************************)
DEFINE_PROGRAM
WAIT 5
{
IF(!Tandberg_Connected)
{
IP_CLIENT_OPEN(dvCodec.PORT,'192.168.1.123',23,1)
}
}
wait 20
{
if(CodecBuffer="255,253,24,255,253,32,255,253,35,255,253,39")
{
send_string dvCodec,"255,252,24,255,252,32,255,252,35,255,252,39 "
clear_buffer CodecBuffer
}
else if(CodecBuffer="255,251,3,255,253,1,255,253,31,255,251,5,255,253,33")
{
send_string dvCodec,"255,254,3,255,252,1,255,252,31,255,254,5,255,252,33"
clear_buffer CodecBuffer
}
if(find_string(CodecBuffer,'login:',1))
{
send_string dvCodec,"'admin',$0D"
clear_buffer CodecBuffer
}
else if(find_string(CodecBuffer,'Password:',1))
{
send_string dvCodec,"'24f2dd7973',$0D" //
clear_buffer CodecBuffer
}
clear_buffer CodecBuffer
}
//wait 50 send_string dvCodec,"'xcommand key Click Key:Selfview',$0D,$0A"
//wait 200 send_string dvLed1,"$AA,$11,$FF,$01,$01,$12"
//wait 200 send_string dvLed2,"$AA,$11,$FF,$01,$01,$12"
(***********************************************************)
(* END OF PROGRAM *)
(* DO NOT PUT ANY CODE BELOW THIS COMMENT *)
(***********************************************************)
Anyway, you might try the ssh port thing as it's very unlikely that you are doing anything with it.
Boy oh boy, this why you don't text and drive. You can't type for crap.
Then log review showing intense outside hacking attempts on telnet. With IPs from China, Russia, and elsewhere, we saw as many as 200 login attempts an hour, sometimes for hours. It looks like it used up all the IP resources of the Netlinx, locking us out.
We set the router to refuse all outside connections except for a few specific domains, and it appears to have stopped both the attacks and the lockups.
I didn't mention this earlier as this thread OP implies that the NetLinx was still communicating without a reboot, a circumstance we didn't see... so this may have nothing to do with this issue, but it clearly can be a problem when the NetLinx is exposed for remote access.
A Virtual Private Network setup is another solution on this issue. We opted to try the IP range blocking first as it was simpler.
While any IP is at risk of being targeted, we have watched enough systems in widely placed areas to see that IP ranges in high income areas are much more targeted than others. Nantucket Island, San Francisco City, and Manhattan areas are much more highly attacked than others. Which makes sense if your purpose is identity theft. Follow the money.
In this environment, a shocking number of (our and other) dealers routinely leave the Netlinx and panel VNC connections exposed, open and completely unsecured... for their "convenience".
Don't.