Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Add udlfb for displaylink screens #141

Closed
pssc opened this Issue · 40 comments

5 participants

@pssc

A number of people seem to have had luck with display-link touch screens the currently involves replacing the whole kernel.

--- - 2013-01-29 10:30:20.596892704 +0000
+++ .config 2013-01-28 12:44:18.088627426 +0000
@@ -2227,16 +2227,17 @@
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
# CONFIG_FB_FOREIGN_ENDIAN is not set
-# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_SYS_FOPS=m
# CONFIG_FB_WMT_GE_ROPS is not set
+CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
+CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set

#
@@ -2247,7 +2248,7 @@
# CONFIG_FB_UVESA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_SMSCUFX is not set
-# CONFIG_FB_UDL is not set
+CONFIG_FB_UDL=m
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_BROADSHEET is not set

@popcornmix
Owner

I'm a little concerned that this could have a performance impact on non-displaylink framebuffer users.
Particularly CONFIG_FB_DEFERRED_IO.

@pssc

looking at Documentation/fb/deferred_io.txt and the uldfb code it will only be used if supported by the particular framebuffer as support has to be explicitly enabled with the driver

iinfo->fbdefio = &hecubafb_defio; (handler function for fb defio in driver)
fb_deferred_io_init(info);

In the case of udlfb it can also be turned off via an option as well as some auto detection for clients that support damage detection(X?).

A further look in drivers/video/fb_defio.c and fb_deferred_io_init + associated functions looks like it should have little or no overhead on fb in general that don’t support it.

Phill

@pssc

I have run up the app(squeezeplay) using its graphic tests (sdl based) I have been using on the standard fb console fps and cpu load tests remain the same.

Phill.

@pssc

Anything else I can to do move this along?

@popcornmix
Owner

I was a bit concerned by this:

int fb_deferred_io_fsync(struct file *file, loff_t start, loff_t end, int datasync)
{
    struct fb_info *info = file->private_data;
    struct inode *inode = file->f_path.dentry->d_inode;
    int err = filemap_write_and_wait_range(inode->i_mapping, start, end);
    if (err)
        return err;

    /* Skip if deferred io is compiled-in but disabled on this fbdev */
    if (!info->fbdefio)
        return 0;

Looks like filemap_write_and_wait_range will get called if CONFIG_DEFERRED_IO is enabled in kernel, even if current fb driver is disbled.

I think I need more convincing this change is harmless, and more evidence that there is demand for this before forcing it on everyone.

@pssc

Ok I understand the caution here,

Its that just implementing normal fsync behavior for a char dev flushing all data to the file/device looks like its a copy of fs/libfs.c generic_file_fsync with the if statement in the wrong place for detecting if its needed for the fb to me...

Most small compact screens seem to come as usb ones these days and they tend to come with a touch screen to boot so its ideal for interfacing with a device like the pi either for one off configuration or as some sort of embed application and they have a very low bar compared with other LCD touch screen interfacing options that don’t use the hdmi. ie I can buy it off amazon and plug it in...

http://www.amazon.co.uk/Mimo-UM-720S-USB-Powered-Monitor-Screen/dp/B002U0K7H/ref=sr_1_1?s=electronics&ie=UTF8&qid=1359735631&sr=1-1

@ggalt

I too am interested in getting support for DisplayLink USB monitors with RaspberryPi. Is there anything I can do to help test that there will be no performance hit if udlfb is enabled by default?

Thanks.

@pssc

Ok,

I have applied the following to fix and enable the usb touch screen I have. It now works in the SDL and x ok for the past week or so and fixes the performance issues. In addition to the initial kernel config option.

diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c
index 64cda56..957c71d 100644
--- a/drivers/video/fb_defio.c
+++ b/drivers/video/fb_defio.c
@@ -70,14 +70,15 @@ int fb_deferred_io_fsync(struct file *file, loff_t start, loff_t end, int datasy
 {
        struct fb_info *info = file->private_data;
        struct inode *inode = file->f_path.dentry->d_inode;
-      int err = filemap_write_and_wait_range(inode->i_mapping, start, end);
-       if (err)
-               return err;

        /* Skip if deferred io is compiled-in but disabled on this fbdev */
        if (!info->fbdefio)
                return 0;

+       int err = filemap_write_and_wait_range(inode->i_mapping, start, end);
+       if (err)
+              return err;-
+
        mutex_lock(&inode->i_mutex);
        /* Kill off the delayed work */
        cancel_delayed_work_sync(&info->deferred_work);

 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_JOYSTICK is not set
 # CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
+# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_EGALAX is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_ILI210X is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+# CONFIG_TOUCHSCREEN_MCS5000 is not set
+# CONFIG_TOUCHSCREEN_MMS114 is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_PIXCIR is not set
+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_ELO=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
+CONFIG_TOUCHSCREEN_USB_NEXIO=y
+CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set

--- a/linux/drivers/usb/input/usbtouchscreen.c        2007-03-23 15:49:35.000000000 +0100
+++ b/linux/drivers/usb/input/usbtouchscreen.c    2007-03-23 15:52:02.000000000 +0100
@@ -54,6 +54,12 @@
 static int swap_xy;
 module_param(swap_xy, bool, 0644);
 MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped.");
+static int invert_x;
+module_param(invert_x, bool, 0644);
+MODULE_PARM_DESC(invert_x, "Invert X axis.");
+static int invert_y;
+module_param(invert_y, bool, 0644);
+MODULE_PARM_DESC(invert_y, "Invert Y axis.");

 /* device specifc data/functions */
 struct usbtouch_usb;
@@ -514,6 +520,7 @@
                                  unsigned char *pkt, int len)
 {
        struct usbtouch_device_info *type = usbtouch->type;
+       int x, y;

        if (!type->read_data(usbtouch, pkt))
                        return;
@@ -521,12 +528,20 @@
        input_report_key(usbtouch->input, BTN_TOUCH, usbtouch->touch);

        if (swap_xy) {
-               input_report_abs(usbtouch->input, ABS_X, usbtouch->y);
-               input_report_abs(usbtouch->input, ABS_Y, usbtouch->x);
+               x = usbtouch->y;
+               y = usbtouch->x;
        } else {
-               input_report_abs(usbtouch->input, ABS_X, usbtouch->x);
-               input_report_abs(usbtouch->input, ABS_Y, usbtouch->y);
+               x = usbtouch->x;
+               y = usbtouch->y;
        }
+       if (invert_x)
+               x = type->max_xc - x + type->min_xc;
+       if (invert_y)
+               y = type->max_yc - y + type->min_yc;
+
+       input_report_abs(usbtouch->input, ABS_X, x);
+       input_report_abs(usbtouch->input, ABS_Y, y);
+
        if (type->max_press)
                input_report_abs(usbtouch->input, ABS_PRESSURE, usbtouch->press);
        input_sync(usbtouch->input);

@jwilker2

I too am interested in getting expanded support for DisplayLink USB monitors with RaspberryPi. A number of others including myself have projects underway. I can report that from my point of view the performance of the DisplayLink USB monitor running on a Model B rev. 1 board directly off the sdcard is quite acceptable. I have it configured with an iPazzPort bluetooth wireless keyboard and a gpio interfaced relay, thermistor and i2c LED. It's gotten more than few looks from others when I show them what I'm up to. I'm frankly surprised it's as capable as it is and I built it. At least one person whose posts I noticed was installing one in his car and I'm sure since the monitors without touchscreen are frequently priced as low as $79 here he's not alone.

On another note, implementing e2i touchscreen on Mimo 720S is representing quite a challenge for a few of us (we have a forum http://raspberrypi.org/phpBB3/viewtopic.php?f=64&t=27781&p=303264#p303264) perhaps one of you kind folks could help point us toward someone more knowledgeable than ourselves who could diagnose it.

I'm sure a few others will be stopping by to express their support.

@jwilker2 jwilker2 referenced this issue in raspberrypi/linux
Closed

USB HID issues with MiMo #224

@philharlow

I would also like to voice support for the mimo displays. I am one of the ones having issues with the touchscreen part my 720S, but with a modified kernel the display operates perfectly with only a tiny bit of lag. They are decent quality, cheap, and use one single cable which is nice for mobile projects, I'm surprised there isn't more support already! Thanks for anything you can do!

@ggalt

@philharlow & @jwilker2, what distro and kernel are you using? I'm currently on Arch using the 3.6.11-7+ kernel. I had both the touchscreen and udlfb working when I recompiled my own kernel (following directions here: http://anup.info/blog/2012/10/13/raspberry-pi-mimo-monitor), but I left it alone for a while and after a few updates, it no longer works (udlfb doesn't load). My assumption is that the update to the firmware hasn't propagated through to ArchArm kernel yet and so there is some mismatch I'm fighting. Any insight would be helpful. FYI, I plan on recompiling my own kernel this weekend to see if I can get udlfb back.

@jwilker2

@ggalt & @philharlow
Hello, George
Boy, if you had touchscreen running under Arch that is good news! We've had a rather intractable problem with it under Rasbian. I'm very interested in being of any assistance I can with your efforts I've run Arch on the Pi, however, I'm no kernel level genius but I'm sure going to give it a hard look again starting right now.

Just a thought, if you have your old 'source tree' intact, don't overwrite it! The 'old' working kernel.img may still be there, good news of course, and the means to regenerate it all the better.

We've been having a hell of a time getting this running under Raspbian - Linux raspberrypi 3.6.11+ 389, if the firmware is the culprit that's interesting and may be fixable. We've heard reports that an older version of Occidentalis that's distributed by Adafruit successfully ran touchscreen at one point. Currently there are no problems I'm are of as far as the DisplayLink framebuffer device it runs impressively well for me.

Can you tell me which USB Monitor you have? The one that is troublesome for us is: ID 17e9:401a DisplayLink that is to say: Mimo USB MINI MONITOR 720-s the monitor portion is great, touchscreen not so much. ID 1ac7:0001 the touchscreen endpoint fails to configure reporting what I think is a bogus error.

This from another forum that should help you prevent finding your 'baby' DOA:
'If your goal is to achieve something experimental, are happy to compile your own kernel, and are frustrated by updates breaking it, the solution is to do updates this way:
sudo SKIP_KERNEL=1 rpi-update (updates your firmware)
git pull (from your kernel source directory)
Compile and install as normal.'

We can move this off this forum if all the wrong people are being spammed.

Thanks for contacting me.

Regards,

Jim

@ggalt

Jim and others:

I've created a public repository where we can continue this discussion without bothering the people here. Here is a link: ggalt/RaspberryArch#1

George

@popcornmix popcornmix referenced this issue in raspberrypi/linux
Closed

Display Link USB Support (MiMO S720, etc) #893

@pssc

Ok I am know longer sure what’s stopping this being enabled given deferred io has been enabled for the pitft drivers.

We now just need:-
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_UDL=m

I have a custom kernel going with these enabled.

@popcornmix
Owner

Okay, will enable and keep an eye out for any reports.

@pssc

@popcornmix ok thanks will test with a MIMo720S and Pluggable USB2.0 adaptor.

@popcornmix popcornmix referenced this issue from a commit
@popcornmix popcornmix firmware: MVC: various improvments to error handling
firmware: dispmanx: Fix for locking with dispmanx_element_add with stereo object

firmware: video_decode: increase the number of userdatas

firmware: platform: Enable VCOS_RELEASE_ASSERTS
See: #377 (comment)

firmware: dispmanx: Fix for dispmanx_snapshot with more than one rotated layer
See: #377

kernel: config: Enable ZSMALLOC, ZRAM and PGTABLE_MAPPING
See: raspberrypi/linux#894

kernel: config: Enable CONFIG_FB_MODE_HELPERS and CONFIG_FB_UDL
See: #141

kernel: bcm2708: Make ioctl logging quieter
See: raspberrypi/linux#895

kernel: HiFiBerry Digi: set SPDIF status bits for sample rate
See: raspberrypi/linux#899

kernel: dts: overlay: add generic support for ads7846
See: raspberrypi/linux#896
151e6e5
@popcornmix popcornmix referenced this issue from a commit in Hexxeh/rpi-firmware
@popcornmix popcornmix firmware: MVC: various improvments to error handling
firmware: dispmanx: Fix for locking with dispmanx_element_add with stereo object

firmware: video_decode: increase the number of userdatas

firmware: platform: Enable VCOS_RELEASE_ASSERTS
See: raspberrypi/firmware#377 (comment)

firmware: dispmanx: Fix for dispmanx_snapshot with more than one rotated layer
See: raspberrypi/firmware#377

kernel: config: Enable ZSMALLOC, ZRAM and PGTABLE_MAPPING
See: raspberrypi/linux#894

kernel: config: Enable CONFIG_FB_MODE_HELPERS and CONFIG_FB_UDL
See: raspberrypi/firmware#141

kernel: bcm2708: Make ioctl logging quieter
See: raspberrypi/linux#895

kernel: HiFiBerry Digi: set SPDIF status bits for sample rate
See: raspberrypi/linux#899

kernel: dts: overlay: add generic support for ads7846
See: raspberrypi/linux#896
998327d
@popcornmix
Owner

Should be enabled now. Can you rpi-update and test?

@pssc

[14937.223886] usb 1-1.3.3: new high-speed USB device number 10 using dwc_otg
[14937.323980] usb 1-1.3.3: New USB device found, idVendor=058f, idProduct=6254
[14937.324022] usb 1-1.3.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[14937.328983] hub 1-1.3.3:1.0: USB hub found
[14937.329325] hub 1-1.3.3:1.0: 4 ports detected
[14937.604041] usb 1-1.3.3.2: new high-speed USB device number 11 using dwc_otg
[14937.727582] usb 1-1.3.3.2: New USB device found, idVendor=17e9, idProduct=0335
[14937.727670] usb 1-1.3.3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[14937.727692] usb 1-1.3.3.2: Product: MIMO
[14937.727709] usb 1-1.3.3.2: Manufacturer: DisplayLink
[14937.727778] usb 1-1.3.3.2: SerialNumber: 1071101867
[14937.833905] usb 1-1.3.3.3: new full-speed USB device number 12 using dwc_otg
[14937.947628] udlfb: DisplayLink MIMO - serial #1071101867
[14937.950357] udlfb: vid_17e9&pid_0335&rev_0120 driver's dlfb_data struct at cb48f800
[14937.950462] udlfb: console enable=1
[14937.950586] udlfb: fb_defio enable=1
[14937.964512] udlfb: shadow enable=1
[14937.965130] udlfb: vendor descriptor length:23 data:23 5f 01 00 21 00 04 04 07 00 01
[14937.965220] udlfb: DL chip limited to 1500000 pixel modes
[14937.972029] usb 1-1.3.3.3: New USB device found, idVendor=1ac7, idProduct=0001
[14937.972168] usb 1-1.3.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[14937.972728] usb 1-1.3.3.3: Product: USB Touchpanel
[14937.972913] usb 1-1.3.3.3: Manufacturer: e2i Technology, Inc.
[14937.973001] usb 1-1.3.3.3: SerialNumber: L000000000
[14938.011480] udlfb: allocated 4 65024 byte urbs
[14938.040129] usbcore: registered new interface driver udlfb
[14938.190155] udlfb: 800x480 @ 59 Hz valid mode
[14938.190347] udlfb: Reallocating framebuffer. Addresses will change!
[14938.234769] udlfb: 800x480 @ 59 Hz valid mode
[14938.236208] udlfb: set_par mode 800x480
[14938.286006] udlfb: DisplayLink USB device /dev/fb2 attached. 800x480 resolution. Using 1504K framebuffer memory
[14938.439105] input: e2i Technology, Inc. USB Touchpanel as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.3/1-1.3.3.3/1-1.3.3.3:1.0/input/input9
[14938.449138] usbcore: registered new interface driver usbtouchscreen
root@raspberrypi:/home/pi# FBDEV=/dev/fb2 FPS=12 /opt/squeezeplay/bin/fbcp

Screen replicated onto MIMO 720S device nicely

@popcornmix
Owner

Okay to close?

@pssc

@popcornmix yup slay the 2 year old issue!

@popcornmix popcornmix closed this
@jwilker2
@philharlow

@pssc did you do anything extra to get the touchscreen to register? If I take a fresh copy of rasbian (2/16), run sudo rpi-update, sudo reboot and then connect my 720S via hub, the screen now turns green, so the udlfb part is working, but I am still get the 'device descriptor read/64, error -71' errors and the touchscreen doesn't register. Are you using the dwc_otg.speed=1 modification to change the usb speeds? Also, sorry if this is the wrong place for this!

@pssc

@philharlow is the usb t/s module loaded "insmod usbtouchscreen", mine's at home so I can have a poke tomorrow if needed (mine is also connected through a hub), evtest can be useful for debugging once you have an input device. Also lsusb -tv see if you can see a hub with the screen and a hid/ts device.

@pssc

@philharlow not a via chipset usb3 hub it is it? I am using dwc_otg.fiq_fsm_mask=0xf as I was seeing issues with 'FIQ reported NYET. Data may have been lost.' but I don’t believe they where due to the screen, more likely my DAC on the hub.

@XECDesign XECDesign referenced this issue from a commit
@popcornmix popcornmix firmware: MVC: various improvments to error handling
firmware: dispmanx: Fix for locking with dispmanx_element_add with stereo object

firmware: video_decode: increase the number of userdatas

firmware: platform: Enable VCOS_RELEASE_ASSERTS
See: #377 (comment)

firmware: dispmanx: Fix for dispmanx_snapshot with more than one rotated layer
See: #377

kernel: config: Enable ZSMALLOC, ZRAM and PGTABLE_MAPPING
See: raspberrypi/linux#894

kernel: config: Enable CONFIG_FB_MODE_HELPERS and CONFIG_FB_UDL
See: #141

kernel: bcm2708: Make ioctl logging quieter
See: raspberrypi/linux#895

kernel: HiFiBerry Digi: set SPDIF status bits for sample rate
See: raspberrypi/linux#899

kernel: dts: overlay: add generic support for ads7846
See: raspberrypi/linux#896
0be2bc5
@philharlow

@pssc Thanks for the response! I apologize, I'm very green when discussing linux modules, kernels and usb protocol. I'm taking a fresh image of raspbian, setting it up to boot to x11, running sudo rpi-update, rebooting, then connecting the screen. I have the screen, my wireless mouse/kb adapter and the pi iteself (for power) plugged into the hub. I see this same result with two different usb 2.0 hubs I have.
When I run 'insmod usbtouchscreen' I get 'Error: could not load module usbtouchscreen: No such file or directory'.
When I run 'lsusb -tv' I get http://pastie.org/10081708.
This is the tail of my dmesg: http://pastie.org/10081710
In the dmesg you can see the -71 errors I get where yours is working. I can get my screen to work using @jwilker2's workaround of changing usb speeds by adding 'dwc_otg.speed=1' to the /boot/cmdline.txt file, but it nukes some other usb devices I was hoping to use as well. I also tried adding your 'dwc_otg.fiq_fsm_mask=0xf' to my /boot/cmdline.txt just in case that inadvertently did it, but still an error. I don't know what next steps I could try to debug this so if you had any ideas or could point me in the right direction it'd be greatly appreciated! Thanks!

@pssc

@philharlow ok You shouldnt need dwc_otg.speed=1 all devices in the screen are 2.0 bar the t/s controller, type modprobe usbtouchscreen , if you get the green screen the framebuffer is working, can you give full dmesg ouput without dwc_otg.speed=1

@philharlow

@pssc Ok thanks. I ran sudo modprobe usbtouchscreen but didn't get any output, then connected screen and then here's the full dmesg: http://pastie.org/10082148 Thanks again!

@pssc
@philharlow

Ok thank you!

@pssc

@philharlow Output from my working system

root@raspberrypi:/home/pi# lsusb -tv
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 3, If 0, Class=vend., Driver=smsc95xx, 480M
        |__ Port 3: Dev 4, If 0, Class=hub, Driver=hub/7p, 480M
            |__ Port 1: Dev 5, If 0, Class=audio, Driver=snd-usb-audio, 12M
            |__ Port 1: Dev 5, If 1, Class=audio, Driver=snd-usb-audio, 12M
            |__ Port 1: Dev 5, If 2, Class=audio, Driver=snd-usb-audio, 12M
            |__ Port 1: Dev 5, If 3, Class=HID, Driver=usbhid, 12M
            |__ Port 4: Dev 8, If 0, Class=hub, Driver=hub/4p, 480M
                |__ Port 2: Dev 9, If 0, Class=vend., Driver=udlfb, 480M
                |__ Port 3: Dev 10, If 0, Class=vend., Driver=usbtouchscreen, 12M
            |__ Port 6: Dev 6, If 0, Class=HID, Driver=usbhid, 1.5M
            |__ Port 6: Dev 6, If 1, Class=HID, Driver=usbhid, 1.5M

[ 1495.181234] usb 1-1.3.4: new high-speed USB device number 8 using dwc_otg
[ 1495.281240] usb 1-1.3.4: New USB device found, idVendor=058f, idProduct=6254
[ 1495.281282] usb 1-1.3.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1495.287657] hub 1-1.3.4:1.0: USB hub found
[ 1495.288058] hub 1-1.3.4:1.0: 4 ports detected
[ 1495.561279] usb 1-1.3.4.2: new high-speed USB device number 9 using dwc_otg
[ 1495.685047] usb 1-1.3.4.2: New USB device found, idVendor=17e9, idProduct=0335
[ 1495.685090] usb 1-1.3.4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1495.685114] usb 1-1.3.4.2: Product: MIMO
[ 1495.685132] usb 1-1.3.4.2: Manufacturer: DisplayLink
[ 1495.685150] usb 1-1.3.4.2: SerialNumber: 1071101867
[ 1495.791169] usb 1-1.3.4.3: new full-speed USB device number 10 using dwc_otg
[ 1495.928727] usb 1-1.3.4.3: New USB device found, idVendor=1ac7, idProduct=0001
[ 1495.928966] usb 1-1.3.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1495.929180] usb 1-1.3.4.3: Product: USB Touchpanel
[ 1495.929305] usb 1-1.3.4.3: Manufacturer: e2i Technology, Inc.
[ 1495.929409] usb 1-1.3.4.3: SerialNumber: L000000000
[ 1496.019035] udlfb: DisplayLink MIMO - serial #1071101867
[ 1496.019118] udlfb: vid_17e9&pid_0335&rev_0120 driver's dlfb_data struct at d1225800
[ 1496.019135] udlfb: console enable=1
[ 1496.019146] udlfb: fb_defio enable=1
[ 1496.019160] udlfb: shadow enable=1
[ 1496.023385] udlfb: vendor descriptor length:23 data:23 5f 01 00 21 00 04 04 07 00 01
[ 1496.023425] udlfb: DL chip limited to 1500000 pixel modes
[ 1496.024549] udlfb: allocated 4 65024 byte urbs
[ 1496.029915] usbcore: registered new interface driver udlfb
[ 1496.208281] udlfb: 800x480 @ 59 Hz valid mode
[ 1496.208325] udlfb: Reallocating framebuffer. Addresses will change!
[ 1496.212309] udlfb: 800x480 @ 59 Hz valid mode
[ 1496.212346] udlfb: set_par mode 800x480
[ 1496.256812] udlfb: DisplayLink USB device /dev/fb2 attached. 800x480 resolution. Using 1504K framebuffer memory
[ 1496.435436] input: e2i Technology, Inc. USB Touchpanel as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3.4/1-1.3.4.3/1-1.3.4.3:1.0/input/input7
[ 1496.443769] usbcore: registered new interface driver usbtouchscreen
@pssc

@philharlow are your hubs usb3 capable?

@philharlow

@pssc They should only USB2.0. One of them was purchased before USB3.0 was even spec'd. I'll go home tonight and enable the dwc_otg.speed=1 to get the touchscreen to register and then Ill post the dmesg and lsusb output in case there's a hint in there? Thanks for the help!

@philharlow

@pssc ok I added the dwc_otg.speed=1 mod and rebooted, then connected the display. Here's my lsusb -tv and dmesg: http://pastie.org/10091179

@pssc

@philharlow what happens if you don't go through the hub? this is looking more like a doggy USB 1.1 pass through issue with the hub. is it powered externally?

Running Linux raspberrypi 3.18.11+ #776 PREEMPT Mon Apr 6 13:13:58 BST 2015 armv6l GNU/Linux

@philharlow

@pssc Sorry for taking so long to respond! I use a powered hub to power the screen, but I finally was able to test powering it directly with a cable like this http://www.videk.co.uk/section.php/898/1/usb-y-power-cable, with the power side being plugged into an iphone charger, this is my lsusb and dmesg: http://pastie.org/10108598
I then tried this hub as well: http://www.tigerdirect.com/applications/SearchTools/item-details.asp?EdpNo=1155678 and got the same result: http://pastie.org/10108612
Are you able to connect the screen on a fresh image of raspbian? Thanks!

@philharlow

@pssc As I feel you can never have too many USB hubs, if you link the amazon page for the exact hub you're using, I'm willing to buy one just to eliminate as many variables between our setups. Thanks so much for your continued help with this!

@philharlow

@pssc Could you tell me what hub you're using? I want to order one just to try.

@pssc

@philharlow http://www.amazon.co.uk/dp/B009R921SE but before you do that you varied the screen works on another box say a x86 linux/windows box?

@philharlow

@pssc I just confirmed the touchscreen works on Ubuntu with and without the usb hub, and Windows shows the display, but I cannot get the touchscreen drivers to work, with or without the hub. I'll spend some time trying to get the drivers to work.
Thanks for the link. Haha, I had one of those exact hubs, but can't find it for the life of me, so I've just ordered another. I will report if the hub changes anything. Thanks!

@philharlow

@pssc thanks again for all the help with this. Unfortunately I get the exact same behavior with the pluggable hub. Have you tried your screen working on a fresh copy of raspbian? I wonder if you've installed or configured something that lets the touchscreen work for you? I'm just trying to figure out whats different between our setups.

Thanks again for the help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.