Open robotaiguy opened 4 years ago
Hi,
Please don't ask this type of question here, but use aravis discourse instance instead:
https://aravis-project.discourse.group/
Thanks.
Cheers,
Emmanuel.
I was focused on the last question of your report, which was a general question about 5G cameras supported by Aravis? hence the request to ask the question on aravis discourse.
But now I understand you are trying to use a Genie Nano C4060 device using aravis.
Let's try to figure out what is wrong with this device.
What version of aravis are you using ?
What is the output of ./tests/arv-camera-test
?
Thank you so much for your response. I am using Aravis 0.6.4. When I run the test, this is the display
skynet@smash:~/aravis-0.6.4$ ./tests/arv-camera-test
Looking for the first available camera
vendor name = Teledyne DALSA
model name = Nano-5G-C4060
device id = S1219995
image width = 4112
image height = 2176
horizontal binning = 1
vertical binning = 1
payload = 8947968 bytes
exposure = 15000 µs
gain = 1 dB
gv n_stream channels = 1
gv current channel = 0
gv packet delay = 0 ns
gv packet size = 1500 bytes
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
And it continues like this forever.
Frame rate = 0 Hz
And it continues like this forever.
After you press ctrl+c, you should have a few lines displayed. Could you paste them ?
Looking for the first available camera
vendor name = Teledyne DALSA
model name = Nano-5G-C4060
device id = S1219995
image width = 4112
image height = 2176
horizontal binning = 1
vertical binning = 1
payload = 8947968 bytes
exposure = 15000 µs
gain = 1 dB
gv n_stream channels = 1
gv current channel = 0
gv packet delay = 0 ns
gv packet size = 1500 bytes
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
Frame rate = 0 Hz
^CFrame rate = 0 Hz
Completed buffers = 0
Failures = 0
Underruns = 0
So for some reason streaming doesn't start.
May be the full debug output will help. Could you attach the output of:
./tests/arv-camera-test --debug all:3
When I run the full debug test, I have to type Crtl-C very quickly, and it STILL doesn't show me all of the information back from the beginning. Perhaps I can increase the buffer that my terminal holds to show everything.
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_type = ack
command = write-memory-ack
size = 4
id = 54
00000000 00 00 00 87 00 04 00 36 00 00 00 04 .......6....
[GcCommand::execute] AcquisitionStop (0x1)
[GvStream::close_frame] Close frame 0
bins ;Buffer r
0; 0
-------------
>= 200; 0
< 0; 0
min ; n/a
max ; n/a
last max
at: ; 0
Counter = 0
[GvStream::finalize] n_completed_buffers = 0
[GvStream::finalize] n_failures = 0
[GvStream::finalize] n_timeouts = 0
[GvStream::finalize] n_aborteds = 1
[GvStream::finalize] n_underruns = 0
[GvStream::finalize] n_missing_frames = 0
[GvStream::finalize] n_size_mismatch_errors = 0
[GvStream::finalize] n_received_packets = 38918
[GvStream::finalize] n_missing_packets = 0
[GvStream::finalize] n_error_packets = 0
[GvStream::finalize] n_ignored_packets = 38918
[GvStream::finalize] n_resend_requests = 0
[GvStream::finalize] n_resent_packets = 0
[GvStream::finalize] n_duplicated_packets = 38917
[Stream::finalize] Flush 49 buffer[s] in input queue
[Stream::finalize] Flush 1 buffer[s] in output queue
packet_type = cmd
command = read-register-cmd
size = 4
id = 55
address = 2560 (0x00000a00)
00000000 42 01 00 80 00 04 00 37 00 00 0a 00 B......7....
packet_type = ack
command = read-register-ack
size = 4
id = 55
success = 2 (0x00000002)
00000000 00 00 00 81 00 04 00 37 00 00 00 02 .......7....
packet_type = cmd
command = write-register-cmd
size = 8
id = 56
address = 2560 (0x00000a00)
value = 0 (0x00000000)
00000000 42 01 00 82 00 08 00 38 00 00 0a 00 00 00 00 00 B......8........
packet_type = ack
command = write-register-ack
size = 4
id = 56
data index = 1 (0x00000001)
00000000 00 00 00 83 00 04 00 38 00 00 00 01 .......8....
So I spoke with Teledyne Dalsa about this issue as well. Because at first, when I was using their driver from the C4030, the C4060 would NOT render even with THEIR example applications. SO they said that I needed to download the GIgeV framework V2.20. I did that, and after installing it, then their example applications would render. They said that we need to use their new filter driver. I'm not sure if that makes any sense, or has any relevance. But if would help, I can send you their 2.20 framework.
Streaming is started, but all packets are rejected marked as duplicates, which sounds weird. Before I dig into the source code, could you try the latest version of aravis ?
I have to go on a drive into town now, but I will do that as soon as I return, and let you know if that makes a difference. To be clear, is the latest version 0.7.5? Will this require me to use meson build and ninja install?
To be clear, is the latest version 0.7.5? Will this require me to use meson build and ninja install?
Yes. If they are not available in your distribution, latest meson and ninja can be installed using pip3.
Ok, perfect. I will be back to update in a few hours. THANK YOU SO MUCH!
skynet@smash:~/aravis-0.7.5$ meson build
The Meson build system
Version: 0.45.1
Source dir: /home/skynet/aravis-0.7.5
Build dir: /home/skynet/aravis-0.7.5/build
Build type: native build
meson_options.txt:3:0: ERROR: Unknown type feature.
A full log can be found at /home/skynet/aravis-0.7.5/build/meson-logs/meson-log.txt
skynet@smash:~/aravis-0.7.5$ cd build
skynet@smash:~/aravis-0.7.5/build$ ninja
ninja: error: loading 'build.ninja': No such file or directory
I hate being this stupid...PLease help.
How did you install meson ? With pip3, it is as easy as:
pip3 install meson ninja
There is requirement on the meson version, it should be at least 0.47.
Ok, so I ran the pip3 install meson ninja command and it seemed to do a lot better.
Then:
meson build
The Meson build system
Version: 0.55.0
Source dir: /home/skynet/aravis-0.7.5
Build dir: /home/skynet/aravis-0.7.5/build
Build type: native build
Project name: aravis
Project version: 0.7.5
C compiler for the host machine: cc (gcc 7.5.0 "cc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0")
C linker for the host machine: cc ld.bfd 2.30
C++ compiler for the host machine: c++ (gcc 7.5.0 "c++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0")
C++ linker for the host machine: c++ ld.bfd 2.30
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (0.29.1)
Run-time dependency glib-2.0 found: YES 2.56.4
Run-time dependency gobject-2.0 found: YES 2.56.4
Run-time dependency gio-2.0 found: YES 2.56.4
Run-time dependency libxml-2.0 found: YES 2.9.4
Run-time dependency zlib found: YES 1.2.11
Found CMake: /usr/bin/cmake (3.10.2)
Run-time dependency libusb-1.0 found: NO (tried pkgconfig and cmake)
Library m found: YES
Has header "linux/if_packet.h" : YES
Program glib-mkenums found: YES
Program glib-mkenums found: YES
Program glib-mkenums found: YES
Program glib-mkenums found: YES
Configuring arvfeatures.h using configuration
Configuring arvversion.h using configuration
Program g-ir-scanner found: NO
Run-time dependency gobject-introspection-1.0 found: NO (tried pkgconfig and cmake)
Run-time dependency gtk+-3.0 found: YES 3.22.30
Run-time dependency gstreamer-base-1.0 found: YES 1.14.5
Run-time dependency gstreamer-app-1.0 found: YES 1.14.5
Run-time dependency gstreamer-video-1.0 found: YES 1.14.5
Run-time dependency libnotify found: NO (tried pkgconfig and cmake)
Dependency gstreamer-base-1.0 found: YES 1.14.5 (cached)
Dependency gstreamer-app-1.0 found: YES 1.14.5 (cached)
Configuring gst-aravis-launch using configuration
Configuring gst-aravis-inspect using configuration
Program gtkdoc-scan found: YES
Program xsltproc found: YES
Configuring gtkdocentities.ent using configuration
Program gtkdoc-scan found: YES
Program gtkdoc-scangobj found: YES
Program gtkdoc-mkdb found: YES
Program gtkdoc-mkhtml found: YES
Program gtkdoc-fixxref found: YES
Build targets in project: 32
Found ninja-1.10.0.git.kitware.jobserver-1 at /home/skynet/.local/bin/ninja
Then:
skynet@smash:~/aravis-0.7.5$ cd build
skynet@smash:~/aravis-0.7.5/build$ ninja
[130/130] Linking target tests/arv-zip-test
skynet@smash:~/aravis-0.7.5/build$ ninja install
[0/1] Installing files.
Installation failed due to insufficient permissions.
Attempting to use polkit to gain elevated privileges...
Traceback (most recent call last):
File "/home/skynet/.local/bin/meson", line 5, in <module>
from mesonbuild.mesonmain import main
ModuleNotFoundError: No module named 'mesonbuild'
FAILED: meson-install
/home/skynet/.local/bin/meson install --no-rebuild
ninja: build stopped: subcommand failed.
Can you help me understand why the installation failed?
By default, the installation prefix is /usr/local, which is not writeable by a regular user. So have either the choice to install in a prefix located somewhere you can write, or install as root.
The prefix is set using: meson configure --prefix=path/to/install/dir
Anyway, it is possible to use arv-camera-test without the installation step, just run it from the build directory: ./tests/arv-camera-test
.
skynet@smash:~/aravis-0.7.5$ ./build/tests/arv-camera-test
Looking for the first available camera
vendor name = Teledyne DALSA
model name = Nano-5G-C4060
device id = S1219995
image width = 4112
image height = 2176
horizontal binning = 1
vertical binning = 1
payload = 8947968 bytes
exposure = 15000 µs
gain = 1 dB
gv n_stream channels = 1
gv current channel = 0
gv packet delay = 0 ns
gv packet size = 1500 bytes
0 frame/s - 0 MiB/s
0 frame/s - 0 MiB/s
0 frame/s - 0 MiB/s
0 frame/s - 0 MiB/s
0 frame/s - 0 MiB/s
0 frame/s - 0 MiB/s
^C 0 frame/s - 0 MiB/s
Completed buffers = 0
Failures = 0
Underruns = 0
It still gives me the exact same results as before. Also tried with --debug all:3, and the results were the same as with Aravis 0.6.4
Could you add a the following line to arvgvstream.c, line 670:
printf ("packet_id = %d\n", packet_id);
just after:
thread_data->n_received_packets++;
frame_id = arv_gvsp_packet_get_frame_id (packet);
packet_id = arv_gvsp_packet_get_packet_id (packet);
And rerun ./tests/arv-camera-test
After editing that file:
packet_id = 0
packet_id = 0
packet_id = 0
packet_id = 0
0 frame/s - 0 MiB/s
Completed buffers = 0
Failures = 0
Underruns = 0
When I run with full debug:
packet_id = 0
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_id = 0
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_id = 0
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_id = 0
packet_type = ok (0x0000)
content_type = (null) (0x0083)
packet_type = cmd
packet_flags = ack-required
command = read-register-cmd
size = 4
id = 61
address = 2560 (0x00000a00)
00000000 42 01 00 80 00 04 00 3d 00 00 0a 00 B......=....
packet_type = ack
command = read-register-ack
size = 4
id = 61
value = 2 (0x00000002)
00000000 00 00 00 81 00 04 00 3d 00 00 00 02 .......=....
[GvDevice::Heartbeat] Ack value = 2
^C 0 frame/s - 0 MiB/s
Completed buffers = 0
Failures = 0
Underruns = 0
[GcRegisterNode::_set_integer_value] address = 0x20000010, value = 0x1
packet_type = cmd
packet_flags = ack-required
command = write-memory-cmd
size = 8
id = 62
00000000 42 01 00 86 00 08 00 3e 20 00 00 10 01 00 00 00 B......> .......
packet_type = ack
command = write-memory-ack
size = 4
id = 62
00000000 00 00 00 87 00 04 00 3e 00 00 00 04 .......>....
[GcCommand::execute] AcquisitionStop (0x1)
[GvStream::close_frame] Close frame 0
bins ;Buffer r
0; 0
-------------
>= 200; 0
< 0; 0
min ; n/a
max ; n/a
last max
at: ; 0
Counter = 0
[GvStream::finalize] n_completed_buffers = 0
[GvStream::finalize] n_failures = 0
[GvStream::finalize] n_timeouts = 0
[GvStream::finalize] n_aborteds = 1
[GvStream::finalize] n_underruns = 0
[GvStream::finalize] n_missing_frames = 0
[GvStream::finalize] n_size_mismatch_errors = 0
[GvStream::finalize] n_received_packets = 20700
[GvStream::finalize] n_missing_packets = 0
[GvStream::finalize] n_error_packets = 0
[GvStream::finalize] n_ignored_packets = 1
[GvStream::finalize] n_resend_requests = 0
[GvStream::finalize] n_resent_packets = 0
[GvStream::finalize] n_resend_ratio_reached = 1
[GvStream::finalize] n_duplicated_packets = 20699
[Stream::finalize] Flush 49 buffer[s] in input queue
[Stream::finalize] Flush 1 buffer[s] in output queue
packet_type = cmd
packet_flags = ack-required
command = read-register-cmd
size = 4
id = 63
address = 2560 (0x00000a00)
00000000 42 01 00 80 00 04 00 3f 00 00 0a 00 B......?....
packet_type = ack
command = read-register-ack
size = 4
id = 63
value = 2 (0x00000002)
00000000 00 00 00 81 00 04 00 3f 00 00 00 02 .......?....
packet_type = cmd
packet_flags = ack-required
command = write-register-cmd
size = 8
id = 64
address = 2560 (0x00000a00)
value = 0 (0x00000000)
00000000 42 01 00 82 00 08 00 40 00 00 0a 00 00 00 00 00 B......@........
packet_type = ack
command = write-register-ack
size = 4
id = 64
data index = 1 (0x00000001)
00000000 00 00 00 83 00 04 00 40 00 00 00 01 .......@....
The device requires extended ID support, which is not yet supported by aravis. Normally, extended ID should be disabled by aravis, but may for this device extended ID support is mandatory.
The work on extended ID support is tracked here: https://github.com/AravisProject/aravis/issues/227
Could you please try the extended-ids branch ?
https://github.com/AravisProject/aravis/tree/wip/extended-ids
I'll definitely try that when I return to town today. Thanks
On Tue, Aug 4, 2020, 12:01 PM Emmanuel Pacaud notifications@github.com wrote:
Could you please try the extended-ids branch ?
https://github.com/AravisProject/aravis/tree/wip/extended-ids
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/AravisProject/aravis/issues/397#issuecomment-668713561, or unsubscribe https://github.com/notifications/unsubscribe-auth/AORKCKMSZTQK4NOS2ZXZTBDR7A5HJANCNFSM4PN5RXNA .
I have merged the branch into master.
Please reopen if the camera still does not work.
I also have one Genie Nano 5G C4060, and I have the same problem:
./arv-camera-test-0.8 Looking for the first available camera vendor name = Teledyne DALSA model name = Nano-5G-C4060 device serial number = S1248409 image width = 4112 image height = 2176 horizontal binning = 1 vertical binning = 1 exposure = 15000 µs gain = 1 dB payload = 8948928 bytes gv n_stream channels = 1 gv current channel = 0 gv packet delay = 1000 ns gv packet size = 1504 bytes 0 frame/s - 0 MiB/s - 8 errors 0 frame/s - 0 MiB/s - 10 errors 0 frame/s - 0 MiB/s - 10 errors 0 frame/s - 0 MiB/s - 10 errors ^C 0 frame/s - 0 MiB/s - 10 errors n_completed_buffers = 0 n_failures = 48 n_underruns = 0 n_timeouts = 48 n_aborteds = 0 n_missing_frames = 0 n_size_mismatch_errors = 0 n_received_packets = 307449 n_missing_packets = 48 n_error_packets = 49 n_ignored_packets = 0 n_resend_requests = 52 n_resent_packets = 3 n_resend_ratio_reached = 0 n_resend_disabled = 49 n_duplicated_packets = 0 n_transferred_bytes = 453579980 n_ignored_bytes = 0
Hi @josepqp
Please update to aravis 0.8.15 and attach the output of arv-camera-test-0.8 -d all --duration=5
.
>= 200000; 30; 701; 19
< 0; 0; 0; 0
min : 208195; 0; 1
max : 621586; 521568; 407712
last max at : 20; 34590; 30636
counter : 30: 39088: 39058
[08:51:44.912] 🅸 stream> [GvStream::finalize] n_completed_buffers = 0 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_failures = 30 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_underruns = 0 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_timeouts = 30 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_aborteds = 0 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_missing_frames = 0 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_size_mismatch_errors = 0 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_received_packets = 39116 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_missing_packets = 183277 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_error_packets = 27 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_ignored_packets = 28 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_resend_requests = 2713329 [08:51:44.913] 🅸 stream> [GvStream::finalize] n_resent_packets = 991 [08:51:44.914] 🅸 stream> [GvStream::finalize] n_resend_ratio_reached = 0 [08:51:44.914] 🅸 stream> [GvStream::finalize] n_resend_disabled = 27 [08:51:44.914] 🅸 stream> [GvStream::finalize] n_duplicated_packets = 21 [08:51:44.914] 🅸 stream> [GvStream::finalize] n_transferred_bytes = 57610512 [08:51:44.914] 🅸 stream> [GvStream::finalize] n_ignored_bytes = 9376 [08:51:44.914] 🅸 stream> [Stream::finalize] Flush 50 buffer[s] in input queue [08:51:44.914] 🅸 stream> [Stream::finalize] Flush 0 buffer[s] in output queue
@EmmanuelP the camera is detected, I have a light in strobe mode,then I can say that the images are shot, but any I don't receive any buffer/image on the PC
@josepqp What machine are you using ? How is your camera connected ?
x86_64 connected directly using ethernet
Camera works on the same laptop using windows I also tested the generic SDK from www.matrix-vision.com and the camera works (the SDK works on top of GenTL) - mvGenTL_Acquire x86_ABI2 2.38.0.tgz
I don't know if this information will help, or if it's outdated, or irrelevant. But Teledyne Dalsa engineers told me that they believe the issue is because the C4060 (and all of their 5Gbps cameras) are set to use "extended ID mode", whereas the 1Gbps models don't.
When I was using this camera a year ago (I've since changed to Basler cameras), Teledyne Dalsa told me that THEIR OWN API framework for Linux didn't account for extended ID mode. Their Windows API handles it fine, but not their Linux API. Like I said, I didn't have time for them to figure that problem out, so I switched to Basler Ace and Ace2 cameras, which uses the same API for all of their models.
And I was pushing PO's for 60 cameras...so trust that I did have Teledyne's ear on this issue. One of the engineers was trying to write new software for me on the weekends to make it work. But after 3 weeks, I had to tell them the bad news. I just didn't have time to wait.
Thanks @robotwhispering for the comment.
Aravis is supposed to support extended ids, but there is possibly some corner cases not handled correctly.
@josepqp What would help is a capture of the network traffic between aravis and the camera, using Wireshark.
For this, select a small resolution that still does not work, using arv-camera-test, then capture the network traffic when running ./tests/arv-acquisition-test (this tool is supposed to capture a single frame).
Another thing that would help, if you are located in the European Union, or willing to pay the custom costs if you live in another part of the world, is a donation of a Genie C4060 to the Aravis project. It is pretty hard to work on device support without an actual device at hand. A donation also help to ensure a future version of Aravis will not introduce regressions.
So, if you have a unused spare one you can part with...
I have been using a Teledyne Dalsa Genie Nano C4030 (1Gbps) camera with Aravis, with great success, other than the fact that I can't render better than 8 fps. So I recently purchased the Genie Nano C4060 (5Gbps) camera as a supposed "drop-in replacement". However, this camera obviously does something odd with their Bayer encoding, because Aravis cannot render frames from it.
Does anyone know of a camera that I can buy that I can get 25+ fps Bayer (5+ Gbps) that Aravis can render?