serdisplib 2.01 not working with the alphacool display
Brought to you by:
mrwastl
Dear serdisplib team,
serdisplib 2.1 is not working with the alphacool display with libusb-1.0-0-dev:amd64 (2:1.0.22-2) and kernel 4.16.0-1-amd64 on Debian. The compilation is successful and I can run testserdisp -n alphacool -p 'USB:060C/04EB'. However whatever command I execute in testserdisp my display stays black. The display is working fine with Windows.
I have compiled the tool using the configuration: ./configure --prefix=/usr --with-drivers=acoolsdcm --enable-libusb
When using -d 2 no errors are shown in testserdisp. Unfortunately I do not know how to generate more debug output.
Here the config output:
$ ./configure --prefix=/usr --with-drivers=acoolsdcm --enable-libusb
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for gar... no
checking for ar... ar
checking for gmake... no
checking for make... make
checking whether make sets $(MAKE)... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for uint32_t... yes
checking size of int... 4
checking size of long... 8
checking gd/gd.h usability... no
checking gd/gd.h presence... no
checking for gd/gd.h... no
checking gd.h usability... yes
checking gd.h presence... yes
checking for gd.h... yes
checking /opt/sfw/include/gd.h usability... no
checking /opt/sfw/include/gd.h presence... no
checking for /opt/sfw/include/gd.h... no
checking for gdImageCreateTrueColor in -lgd... yes
checking for gdImageCreateTrueColor... yes
checking for gdImageCreateFromGif... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for dlopen in -ldl... yes
checking for dlsym... no
checking for dlsym in -ldl... yes
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking for libusb-config... /usr/bin/libusb-config
checking usb.h usability... yes
checking usb.h presence... yes
checking for usb.h... yes
checking for usb_get_string_simple in -lusb... yes
checking for usb_get_string_simple... yes
checking for usb_detach_kernel_driver_np... yes
checking for pkg-config... /usr/bin/pkg-config
checking for libusb_bulk_transfer in -lusb-1.0... yes
checking libusb-1.0/libusb.h usability... yes
checking libusb-1.0/libusb.h presence... yes
checking for libusb-1.0/libusb.h... yes
checking for libusb_bulk_transfer... yes
checking for sdl-config... /usr/bin/sdl-config
checking SDL/SDL.h usability... yes
checking SDL/SDL.h presence... yes
checking for SDL/SDL.h... yes
checking libdlo.h usability... no
checking libdlo.h presence... no
checking for libdlo.h... no
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking linux/fb.h usability... yes
checking linux/fb.h presence... yes
checking for linux/fb.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking for ANSI C header files... (cached) yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for working volatile... yes
checking whether gcc needs -traditional... no
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for gettimeofday... yes
checking for memset... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strerror... yes
checking for strncasecmp... yes
checking for strrchr... yes
checking for strtol... yes
configure: creating ./config.status
config.status: creating serdisplib.spec
config.status: creating include/serdisplib/serdisp_control.h
config.status: creating src/Makefile
config.status: creating tools/Makefile
config.status: creating Makefile
config.status: creating DOCS/Doxyfile
config.status: creating serdisplib.pc
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing default commands
serdisplib version: 2.01
features
========
* experimental code ... disabled
* deprecated drivers ... disabled
* dyn. loading of libraries ... yes
NOTE:
All binaries that are linking the static version of libserdisp also require to link libdl!
(eg.: gcc -o app app.o libserdisp.a -ldl)
This is NOT necessary if linking the dynamic version (eg.: gcc -o app app.o -lserdisp)
supported extra libraries
=========================
* libusb support ... yes (dynamically added via dlopen())
* libSDL support ... yes (dynamically added via dlopen())
* libpthread support ... yes (dynamically added via dlopen())
* libgd >= 2 support ... yes
enabled(+) / disabled(-) drivers
================================
+ acoolsdcm
- displaylink, remote, framebuffer, directgfx, ddusbt, lc7981, rs232, glcd2usb, stv8105, goldelox, l4m, ssdoled, lh155, ks0108, nokcol, sed133x, t6963, i2c, sed156x, pcd8544, sed153x
tools
=====
* multidisplay ... yes
- with GIF support ... yes
--- Now type "make" to build serdisplib
--- (on linux systems, 'make' and 'gmake' usually are the same)
---
--- For testing serdisplib use "src/testserdisp"
hi vladimir,
thanks for your detailed error description.
i've tested my alphacool display with fedora 28 / kernel 4.16.8 some minutes ago:
it workes, but with a distorted test screen (works fine after 'clear' and a new 'test' in testserdisp).
worked fine on the same system but with older kernels :-/
could be a timing problem, maybe this leads to a dark display on your installation (erraneous initialisation). will have to investigate this ...
the output of -d 2 can be found in /var/log/messages. maybe there's something interesting in your messages-file
another important thing: serdisplib needs libusb 0.1.x (usually this is libusb 1.x + a compatibility layer for 0.1.x in current distributions + both devel-packages).
which libusb-packages do you have installed on your system?
hi vladimir,
could you please test the following:
in src/serdisp_specific_acoolsdcm.c:
near line 550:
add a small delay:
this should not have a negative impact on the performance of the display because this will only be called once, but it should give display-init a little time before executing further commands.
it solved the problem with a distorted test screen with my display.
Hi!
Thanks for the quick reply!
Unfortunately the patch did not help.
I have both libusb 1.0 and libusb 0.1 installed on my system:
Maybe I need to make sure that I link against the correct library? How can I do this?
Here the log of testserdisp:
good
not so good
rights problem?
one quick test: try calling testserdisp -n alphacool as root
if the display is working: definitely a problem with access rights.
Thanks a lot for your help!
The combination of your patch and sudo fixed my problem! :)
hi,
that's nice to hear.
but a little bit interesting too:
adding the small delay: ok. that's clear why this improves stability.
access rights: testserdisp should fail when initialising the display and if access rights are not ok (Error: Unable to open USB:060c/04eb, additional info: SDCONNusb_open(): unable to find or open a matching device). -> opening should fail.
even if your display is working now: could you please paste the testserdisp-output in /var/log/messages like in a former post, but now with working display (-d 2 for debugging)?
and:
lsusb|grep -i 04eb
this should return something like:
Bus 001 Device 014: ID 060c:04eb EEH Datalink GmbH
->
template for device-path: /dev/usb/<bus id>/<device id>
when inserting values from above:
ls -all /dev/usb/001/014
this should return something like:
crw-rw----. 1 root users 189, 13 May 28 20:36 /dev/bus/usb/001/014
thanks in advance!
Hi!
Here my results:
The path /dev/usb only contains hiddev0 on my machine.
sudo cat /var/log/messages | grep test: