-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add udlfb for displaylink screens #141
Comments
I'm a little concerned that this could have a performance impact on non-displaylink framebuffer users. |
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) 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 |
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. |
Anything else I can to do move this along? |
I was a bit concerned by this:
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. |
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... |
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. |
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.
|
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. |
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! |
@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. |
@ggalt & @philharlow 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: We can move this off this forum if all the wrong people are being spammed. Thanks for contacting me. Regards, Jim |
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 |
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:- I have a custom kernel going with these enabled. |
Okay, will enable and keep an eye out for any reports. |
@popcornmix ok thanks will test with a MIMo720S and Pluggable USB2.0 adaptor. |
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
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
Should be enabled now. Can you rpi-update and test? |
[14937.223886] usb 1-1.3.3: new high-speed USB device number 10 using dwc_otg Screen replicated onto MIMO 720S device nicely |
Okay to close? |
@popcornmix yup slay the 2 year old issue! |
Hooray! On Tue, Mar 24, 2015 at 10:45 AM, popcornmix notifications@github.com
"The most exciting phrase to hear in science, the one that heralds new |
@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! |
@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. |
@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. |
@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. |
@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 |
@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! |
@philharlow that's normal will go home tonight and compare output from my On 9 April 2015 at 11:24, philharlow notifications@github.com wrote:
I Can Resist Everything Except Temptation -- Oscar Wilde |
Ok thank you! |
@philharlow Output from my working system
|
@philharlow are your hubs usb3 capable? |
@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! |
@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 |
@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 |
@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 |
@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! |
@pssc Could you tell me what hub you're using? I want to order one just to try. |
@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? |
@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. |
@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! |
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#377 (comment) firmware: dispmanx: Fix for dispmanx_snapshot with more than one rotated layer See: raspberrypi#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#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
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
The text was updated successfully, but these errors were encountered: