Customers may have other applications that need to use the UIM robot's default port (48000) so they need to configure the robot to use a different port.
This article contains a working example and some extra details to support customer that are having trouble configuring the robot to use a different port and still seeing this error:
The controller is unable to use <ip_address>:48000. Aborting. The address/port may already be in use.
This can also be due to the port remaining in TIME_WAIT state
In the robot.cfg file (Nimsoft installation folderobot), you can use the following syntax to change the controller AND the spooler port as well as the first_probe_port:
First, stop the robot.
niminit stop
check for any leftover Nimsoft processes
ps -ef | grep nim
stop/kill any leftover Nimsoft processes if necessary to ensure the robot is down.
Make the changes to the robot.cfg controller section. For example,
controller_port = 48005
spooler_port = 48001
first_probe_port = 48004
Start the robot
niminit start
Check again for the presence of the controller, hdb and spooler processes with the ps command.
Once the changes are made you should see the ports listed in the Infrastructure Manager/Admin Console:
If the controller_port = 48005, setting is working you should see some entries like this in the controller.log:
nimSessionServer - port = 48005
Jun 19 19:10:47:175 [4652] Controller: SSL - skipping SSL server setup - ssl_mode is 0 (off) Jun 19 19:10:47:175 [4652] Controller: sockCheckLocalPort: port=48005, non-strict binding, checking all
Jun 19 19:10:47:175 [4652] Controller: sockCheckLocalPort: port=48005 sock=488, trying addr=-- Jun 19 19:10:47:175 [4652] Controller: sockCheckLocalPort - closesocket 488 Jun 19 19:10:47:175 [4652] Controller: sockServer:0000000000E1AA60:0.0.0.0/48005
Jun 19 19:10:47:175 [4652] Controller: MyPutEnv NIM_CONTROLLER_PORT=48005
Jun 19 19:10:47:175 [4652] Controller: NIM_CONTROLLER_PORT=48005
Jun 19 19:10:47:175 [4652] Controller: thrwq - WQ[0000000000E16D50] - paused
Jun 19 19:10:47:175 [4652] Controller: thrwq - WQ[0000000000E16D50] - set workers: avail=1 max=25 (was avail=0 max=0)
Jun 19 19:10:47:175 [4652] Controller: thrwq - WQ[0000000000E16D50] - resumed
Jun 19 19:10:47:175 [4652] Controller: thrwq - tohub - set max queue length to 100
Jun 19 19:10:47:175 [4652] Controller: Controller on <hostname> port 48005 started
and also
Jun 19 19:10:47:253 [4652] Controller: portRegister - name=controller, port=48005, ip=<none>, pid=5008 Jun 19 19:10:47:253 [4652] Controller: FindNamePid controller - 5008 Jun 19 19:10:47:253 [4652] Controller: reserve_port (controller) - assigned to 48005
For the spooler_port = 48001, if its working, you should see some entries like this;
Jun 19 19:10:48:704 [4652] Controller: RREQUEST: port_register <-10.xxx.xx.xxx/53357 h=116 d=32
Jun 19 19:10:48:704 [4652] Controller: head mtype=100 cmd=port_register seq=0 ts=1529449848 frm=10.xxx.xx.xxx/53357 tout=20 addr=
Jun 19 19:10:48:704 [4652] Controller: data name=spooler port=48001 Jun 19 19:10:48:704 [4652] Controller: port_register (spooler) from ##.###.##.###/53357
Jun 19 19:10:48:704 [4652] Controller: portRegister - name=spooler, port=48001, ip=##.###.##.###, pid=0 Jun 19 19:10:48:704 [4652] Controller: FindNamePid spooler - 0
Jun 19 19:10:48:704 [4652] Controller: reserve_port (spooler) - updated
If the first_probe_port is working as expected, it will start at the defined port and +1 trying to find a port for a given probe that is free, e.g., from the log you will see something like this:
Controller: reserve_port (<probe_name>) starting at 48004
Another log entry that tells you the port change is working is this:
Controller: sockClose:000000000226E080:<robot_ipaddress>/48005
showing you that the controller is using the configured port and NOT 48000.
There should be no sockClose entries showing port 48000 for the robot ip.
Note that the robot.cfg parameters must be defined as listed above but other ports may be used. This is just a working example.
Assign a specific port to a probe in UIM (broadcom.com)
AS400/IBM iSeries systems
As we found from the controller log, the UIM AS400 iSeries controller is unable to use port 48000 because it's likely already in use by another application or process. This can also be due to a port being in TIME_WAIT state. To resolve this, you can either free up the port or configure the robot to use a different port.
Locally on the AS400/iSeries system that fails to start, check which process is using port 48000 using a command-line tool like WRKTCPSTS or NETSTAT.
Workaround:
Modify the robot.cfg file to specify a different port for the UIM robot's controller and/or spooler. The controller_port, spooler_port, and first_probe_port keys in the robot.cfg file can be used to change these settings. Check any firewalls/firewall config, and if you are using a security software, ensure it is configured (whitelisted) to allow the UIM robot's processes and default ports.