Hi, as previously mentioned at this topic Holoscan video output via AJA capture card - #6 by Afonso_Martingo
I’m still facing some issues with AJA capture card as input at Holoscan framework. Was informed to me that after the new release v2.0 the Keyer was again working. I updated my Orin devkit to the new ubuntu to support this Holoscan version (currently v2.2), have installed the latest AJA linux drivers built in with RDMA enabled for IGPU, and now when loading my application i’m getting “Failed to map buffer for DMA” as shown bellow:
root@ubuntu:/opt/nvidia/holoscan/examples/MyModel_laser_segmentation/python# ntv2enumerateboards
AJA NTV2 SDK v17.2.0.0 () supports devices: Corvid, KonaLHi, KonaLHiDVI, IoExpress, Corvid22, Kona3G, Corvid3G, Kona3GQuad, KonaLHe+, IoXT, Corvid24, TTap, Io4K, Io4KUfc, Kona4, Kona4Ufc, Corvid88, Corvid44, CorvidHEVC, KonaIP s2022, KonaIP s2022 2+2, KonaIP J2K 1I 1O, KonaIP J2K 2O, KonaIP s2110 1I 1O, KonaIP s2110, KonaIP s2110 RGB12, CorvidHBR, Io4KPlus, IoIP-s2022, IoIP-s2110, IoIP-s2110_RGB12, Kona1, KonaHDMI, Kona5, Kona5-8KMK, Kona5-8K, Kona5-12Bit, Kona5-3DLUT, Kona5-OE1, Kona5-OE2, Kona5-OE3, Kona5-OE4, Kona5-OE5, Kona5-OE6, Kona5-OE7, Kona5-OE8, Kona5-OE9, Kona5-OE10, Kona5-OE11, Kona5-OE12, Kona5-8K-MV-TX, Corvid44-8KMK, Corvid44-8K, Corvid44-2x4K, Corvid44-PLNR, TTapPro, IoX3, SOJI-3DLUT, SOJI-OE1, SOJI-OE2, SOJI-OE3, SOJI-OE4, SOJI-OE5, SOJI-OE6, SOJI-OE7, SOJI-DIAGS, KonaXM, KonaX, Software
Device 1:
Description: Corvid44-8KMK '00U57643' on 'localhost' at index 0
Name: 'Corvid44-8KMK - 0'
Device ID: 0x10832400
Serial Number: '00U57643'
4 SDI Input(s)
4 SDI Output(s)
0 HDMI Input(s)
0 HDMI Output(s)
0 Analog Input(s)
0 Analog Output(s)
16 channel(s) of Embedded Audio Input
16 channel(s) of Embedded Audio Output
85 video format(s): 1080i50, 1080i59.94, 1080i60, 720p59.94, 720p60, 1080sf23.98, 1080sf24, 1080p29.97, 1080p30, 1080p25, 1080p23.98, 1080p24, 2Kp23.98, 2Kp24, 2Ksf23.98, 2Ksf24, 720p50, 1080p50b, 1080p59.94b, 1080p60b, 1080p50a, 1080p59.94a, 1080p60a, 2Kp25, 2Ksf25, 1080sf25, 1080sf29.97, 1080sf30, 525i59.94, 625i50, 525sf29.97, 625sf25, 2Kp60a, 2Kp59.94a, 2Kp29.97, 2Kp30, 2Kp50a, 2Kp47.95a, 2Kp48a, UHDsf23.98, UHDsf24, UHDsf25, UHDp23.98, UHDp24, UHDp25, UHDp29.97, UHDp30, UHDsf29.97, UHDsf30, UHDp50, UHDp59.94, UHDp60, 4Ksf23.98, 4Ksf24, 4Ksf25, 4Kp23.98, 4Kp24, 4Kp25, 4Kp29.97, 4Kp30, 4Ksf29.97, 4Ksf30, 4Kp47.95, 4Kp48, 4Kp50, 4Kp59.94, 4Kp60, UHD2p23.98, UHD2p24, UHD2p25, UHD2p29.97, UHD2p30, UHD2p50, UHD2p59.94, UHD2p60, 8Kp23.98, 8Kp24, 8Kp25, 8Kp29.97, 8Kp30, 8Kp47.95, 8Kp48, 8Kp50, 8Kp59.94, 8Kp60
13 pixel formats: NTV2_FBF_10BIT_YCBCR, NTV2_FBF_8BIT_YCBCR, NTV2_FBF_ARGB, NTV2_FBF_RGBA, NTV2_FBF_10BIT_RGB, NTV2_FBF_8BIT_YCBCR_YUY2, NTV2_FBF_ABGR, NTV2_FBF_10BIT_DPX, NTV2_FBF_24BIT_RGB, NTV2_FBF_24BIT_BGR, NTV2_FBF_10BIT_DPX_LE, NTV2_FBF_48BIT_RGB, NTV2_FBF_12BIT_RGB_PACKED
root@ubuntu:/opt/nvidia/holoscan/examples/MyModel_laser_segmentation/python# ntv2capture
Frames Frames Buffer
Captured Dropped Level
^C 178 0 1
root@ubuntu:/opt/nvidia/holoscan/examples/MyModel_laser_segmentation/python# sudo python3 AJA_arthrosegmentation_debugging.py -s aja
/usr/local/lib/python3.10/dist-packages/numpy/core/getlimits.py:518: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
setattr(self, word, getattr(machar, word).flat[0])
/usr/local/lib/python3.10/dist-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
return self._float_to_str(self.smallest_subnormal)
/usr/local/lib/python3.10/dist-packages/numpy/core/getlimits.py:518: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
setattr(self, word, getattr(machar, word).flat[0])
/usr/local/lib/python3.10/dist-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
return self._float_to_str(self.smallest_subnormal)
[info] [gxf_executor.cpp:248] [AJA_arthrosegmentation] Creating context
[info] [gxf_executor.cpp:1691] Loading extensions from configs...
[warning] [gxf_resource.cpp:175] Existing entity already has a GPUDevice resource
[info] [gxf_executor.cpp:1897] Activating Graph...
[info] [gxf_executor.cpp:1929] [AJA_arthrosegmentation] Running Graph...
[info] [gxf_executor.cpp:1931] [AJA_arthrosegmentation] Waiting for completion...
2024-08-01 15:22:37.503 INFO gxf/std/greedy_scheduler.cpp@191: Scheduling 8 entities
[info] [aja_source.cpp:386] AJA Source: Capturing from NTV2_CHANNEL1
[info] [aja_source.cpp:387] AJA Source: RDMA is enabled
[info] [aja_source.cpp:393] AJA Source: Overlay output is disabled
[error] [aja_source.cpp:320] Failed to map buffer for DMA
[error] [gxf_wrapper.cpp:57] Exception occurred when starting operator: 'aja' - Failed to setup AJA buffers.
2024-08-01 15:22:37.588 WARN gxf/std/entity_executor.cpp@495: Failed to start entity [aja]
2024-08-01 15:22:37.588 WARN gxf/std/greedy_scheduler.cpp@243: Error while executing entity 7 named 'aja': GXF_FAILURE
2024-08-01 15:22:37.588 ERROR gxf/std/entity_executor.cpp@586: Entity [aja] must be in Started, Tick Pending, Ticking or Idle stage before stopping. Current state is StartPending
2024-08-01 15:22:37.591 INFO gxf/std/greedy_scheduler.cpp@401: Scheduler finished.
[error] [program.cpp:574] wait failed. Deactivating...
[error] [runtime.cpp:1476] Graph wait failed with error: GXF_FAILURE
[warning] [gxf_executor.cpp:1932] GXF call GxfGraphWait(context) in line 1932 of file /workspace/holoscan-sdk/src/core/executors/gxf/gxf_executor.cpp failed with 'GXF_FAILURE' (1)
[info] [gxf_executor.cpp:1942] [AJA_arthrosegmentation] Graph execution finished.
[error] [gxf_executor.cpp:1950] [AJA_arthrosegmentation] Graph execution error: GXF_FAILURE
Traceback (most recent call last):
File "/opt/nvidia/holoscan/examples/MyModel_laser_segmentation/python/AJA_arthrosegmentation_debugging.py", line 1519, in <module>
app.run()
RuntimeError: Failed to setup AJA buffers.
root@ubuntu:/opt/nvidia/holoscan/examples/MyModel_laser_segmentation/python#
There’s any suggestion how to solve this?
Thanks