Basler PoE cameras on Cogswell TX2

I’m having trouble detecting Basler PoE GigE cameras on a ConnectTech Cogswell (a 5 GigE port carrier) with TX2.

I’m running 64-bit Ubuntu, installed the Basler Pylon SDK without problems. Basler’s provided ipConfigurator and camera viewer detect the ports but not the cameras. The OS and the indicator LEDs on the ports do seem to feel something is connected, but the Basler apps do not. I’ve tried manually assigning the adapters’ IP addresses, same result.

I saw the same problem described on this forum a while back, but no solution. Any suggestions?

Have also reached out to Basler, so if I get any further info I’ll update here.

I have never worked with those cameras, nor the carrier. How does the app connect…does it look for a named address, or a dotted-decimal IP address? How is it that the app knows it has a camera? Is the network otherwise working? Is there a router the cameras might be interacting with, or is it static?

FYI, you might post the output of “ifconfig” with all cameras connected.

Their app successfully finds the adapter ports, I do not know how it does so. Basler provides a tool which is supposed to then allow you to assign addresses to the cameras if needed. (By default, both sides should work automatically.)

Their docs recommend, if fully automatic detect doesn’t work, to assign different subnets to each adapter in use. I tried that in the output below, assigning the recommended static address to the first port.

In the output below (I’m omitting the non-ethernet parts of the enumeration), one camera was attached to enp3s0. The traffic does seem to indicate something is successfully connected. But while Basler’s ipConfigurator app did display that adapter name, it did not detect any connected cameras.

nvidia@tegra-ubuntu:/opt/pylon5/bin$ ifconfig
enp3s0 Link encap:Ethernet HWaddr 00:0c:8b:b1:24:18
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::c411:2d8b:5f3a:a2f7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2971 errors:0 dropped:0 overruns:0 frame:0
TX packets:1330 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1044328 (1.0 MB) TX bytes:244489 (244.4 KB)
Interrupt:132 Memory:50100000-50120000

enp4s0 Link encap:Ethernet HWaddr 00:0c:8b:b1:34:18
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:201 errors:0 dropped:0 overruns:0 frame:0
TX packets:399 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:69340 (69.3 KB) TX bytes:72180 (72.1 KB)
Interrupt:132 Memory:50200000-50220000

enp5s0 Link encap:Ethernet HWaddr 00:0c:8b:b1:44:18
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:267 errors:0 dropped:0 overruns:0 frame:0
TX packets:636 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:93068 (93.0 KB) TX bytes:119405 (119.4 KB)
Interrupt:132 Memory:50300000-50320000

enp6s0 Link encap:Ethernet HWaddr 00:0c:8b:b1:54:18
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:195 errors:0 dropped:0 overruns:0 frame:0
TX packets:399 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:67580 (67.5 KB) TX bytes:75221 (75.2 KB)
Interrupt:132 Memory:50400000-50420000

eth0 Link encap:Ethernet HWaddr 00:04:4b:8c:ee:d1
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:42

So this implies each Basler has its own network card (but of course the card could be PCI, USB, or almost anything). Is this correct? Or do they share a network switch?

The reason I ask is that a separate interface (such as “enp6s0” or “enp5s0”) is the way of specifying a different PHY which is independent, versus multiple ports of a single switch. This would change a lot of different details which wouldn’t matter if they were on the same network. What are the physical connections between each camera and the carrier?

The carrier has 5 separate GigE ports, each presents as a separate interface. The cameras are connected directly to the carrier, not through a switch.

I believe I’ve figured out the problem, after some Googling on general GigE issues: Reverse Path Filtering.

When I disable RPF as per the link below, I can successfully enumerate cameras.
https://www.ptgrey.com/KB/10933

Thanks for your interest in solving my problem!

That makes sense. If log_martians had been enabled (and by default it is not, although rp_filter is), then the logs would have probably shown this. For those interested, see:
https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.kernel.rpf.html