Home AMX User Forum AMXForums Archive Threads AMX Hardware

NI 2100 controller locks

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,

Comments

  • ericmedleyericmedley Posts: 4,177
    Some things to try...

    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
  • oki ,

    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 *)
    (***********************************************************)
  • ericmedleyericmedley Posts: 4,177
    Well ou don't need the ZIP CKIENT OPEN in the Data Event. That's just going to grow a runtime error. Did you as I suggested above?
  • HedbergHedberg Posts: 671
    We've been fighting similar issues with seven NI2100 masters each with an NXV-300 attached. Support has been involved and we've been trying all the typical stuff like turning off udp and zeroconifg. Turning off the Bonjour on the virtual touch panels, setting the ethernet mode and the like. The last thing that support suggested was to turn off the ssh server (set the port to 0) and we haven't had either a master or NXV-300 drop off line since. But, the customer's IT guys have been mucking about doing all their super secret crap so who knows what's made the problem go away.

    Anyway, you might try the ssh port thing as it's very unlikely that you are doing anything with it.
  • ericmedleyericmedley Posts: 4,177
    ericmedley wrote: »
    Well ou don't need the ZIP CKIENT OPEN in the Data Event. That's just going to grow a runtime error. Did you as I suggested above?

    Boy oh boy, this why you don't text and drive. You can't type for crap.
  • John NagyJohn Nagy Posts: 1,742
    We too have seen systems lock up after 3 to 8 days, we did hardware and network swapouts trying to isolate it. The NetLinx would literally stop, the heartbeat light would be on solid, no communication, and a hard reboot was required to recover.

    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.
  • DHawthorneDHawthorne Posts: 4,584
    I had a 3100 locking up inexplicably as well, and the problem resolved itself without me ever finding the cause of it. I came to the conclusion it was IP related, which John's response may shed some light on. I have to wonder if there is a Botnet out there latching on to AMX controllers thinking they are PCs it can suborn.
  • John NagyJohn Nagy Posts: 1,742
    There are more bots every day, combing random IP addresses and ports looking for responses from exposed machines. Once they find a port that replies, the info is passed to another network of bots that concentrate on hammering the ports with brute-force random sign-on efforts looking to get inside. Until they get past the login, there's no way to be sure just what kind of machine or content they've found, so I am pretty certain that AMX boxes specifically aren't "targeted"... just found.

    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.
  • jjamesjjames Posts: 2,908
    Had the same problem with an IP address from China - was bombarding SSH and locked up the master. It's been happy ever since I shut down the telnet & SSH port forwarding.
Sign In or Register to comment.