The content of this blog is my personal opinion only. Although I am an employee - currently of Nvidia, in the past of other companies such as Iagination Technologies, MIPS, Intellectual Ventures, Intel, AMD, Motorola, and Gould - I reveal this only so that the reader may account for any possible bias I may have towards my employer's products. The statements I make here in no way represent my employer's position, nor am I authorized to speak on behalf of my employer. In fact, this posting may not even represent my personal opinion, since occasionally I play devil's advocate.

See http://docs.google.com/View?id=dcxddbtr_23cg5thdfj for photo credits.

Friday, May 13, 2016

External touch screen | Apple

External touch screen | Apple:


I wasted a few hours trying to use my GeChic 1502I external touchscreen with my MacBook.

The video works, no drivers.

The touchscreen works at first.  But after a few minutes, any touch makes the MacBook do a funny not-quite-a-crash --- all screens go dark, and I have to re-log in.

---+ DETAIL:

I just connected my GeChic On-Lap 1502I 15.6" Full HD IPS Panel 10-point Projected Capacitive Portable Touchscreen Monitor to my MacBook Pro.

Why?  I wanted a touchscreen to run my "UIX ButtonPad" app.   

I had been using Duet Display to give me an external touchscreen for my MacBook using an iPad mini. Earlier the Quadro app on iPhone/iPad, which provides only the Button Pad functionality and is not a full external display.  But I wanted features missing in Quadro, so I wrote my own. Running it all on the laptop was easier than creating a hybrid app split between laptop and touchscreen phone or tablet. I can use a phone or tablet as an external touchscreen using remote display apps like Duet Display  or Avatron Air Display 

Duet Display  worked when it worked, but suffered problems like losing connections, especially when the iPad screen locked. I have my screen lockout time set very low, like 30 seconds.

+: Plus, I had this big external GeChic 1502I touchscreen, dating back to before I used Apple iPads and Duet Display. It's bigger than any iPad at the time of writing, even the 12.9" iPad Pro.

++, I really miss having a touchscreen device as my main laptop, so I will probably switch back to a Windows Surface, Surface Pro, or Surface Book.  And I wanted my UIX ButtonPad app to work when I give up on Apple MacBooks.

+++ I can supposedly use my Surface as an external touchscreen display for my MacBook.  (Haven't tried but software seems to be out there - VNC if nothing else.) Vice versa, although of course the MacBook isn't a touchscreen - but I can imagine Surface->MacBook->Duet->Tablet.

++++: Plus, I have several old Android tablets (freebies from company and techcons), and a few old Android phones.  I would like to be able to deploy touchscreen UIX ButtonPads onto these devices as well.

DISAPPOINTMENT: Due Display doesn't run on my old iPad Classic. Needs a more modern version of iOS.  Must investigate jailbreaking or XNU - otherwise these old IOS devices are just e-trash.

BOTTOM LINE: hybrid apps split across systems are a bit harder; remote display and touchscreen almost eliminate need.  (Hybrid apps might be more elegant than remote display. But first must code them up.  Hmm... I wonder if one could create a remote display app that could then be "locked" to run only a single app on that display?  Display-locked apps?  App-locked displays? I don't like limiting choice, but I can understand reducing interactions.)

PLEASANT SURPRISE:  I mainly wanted to use my UIX ButtonPad app on a touchscreen, but since Duet Display was acting up I found that it is actually quite pleasant to use on a non-touchscreen mouse and pointer system.  You park your mouse on your primary big button, and just click.  Not quite as pleasant as a touchscreen, but nicer than a WIMPy GUI on a big multi-display system. Possibilities in mapping keyboard shortcuts and mouse/trackball buttons to "big buttons" on the ButtonPad.


But...  I started this blog entry not to describe UIX ButtonPad, but to record notes about using external touchscreens like my GeChic 1502I on a Mac.  

My system: MacBook Pro 15" mid-2014, 16GB RAM, NVIDIA GeForce GT 750M 2048 MB). After connecting the GeChic, I have 3 external monitors:  30" NX-VUE30, 2560x1600, connected using HDMI; 24" Acer X243W, 1200x1920, connected by a USB display adapter (Diamond BVU195 DisplayLink); and the GeChic 1502I, 15", 1920x1080.   For a total of 4 displays, with the Retina display on the MacBook (2880x1800).  

(Even before the GeChic, I tried to have another 24" 1920x1200 display using a USB display adapter - however, this had major problems on the Mac (worked on Windows 7), so I gave up on *that* extra display.  Since the GeChic now works as a 3rd external display, I may revisit adding yet another 1920x1200 display, since I have several dating back to my last windows systems, before I switched to Apple, and before I started using 30" displays as my primary display rather than 24". Perhaps Apple has fixed their software - the problems were pretty obviously driver memory allocation.)

I have used this GeChic display frequently with Windows machines, with no problems. Obviously, there were problems, albeit minor, connecting it to the MacBook - hence this post, which serves as notes for myself, and may help somebody else.

It is obvious that Apple Mac support for multiple, external, displays and touchscreens is less mature than Windows.  The MacBook problems remind me of problems I had with Windows circa 1999-2002, i.e. in the past century.

The first problem was connectors: 

The GeChic has micro HDMI and mini-VGA inputs.   I have used it in the past via the "normal" HDMI to micro-HDMI cables, both from GeChic, and similar cables that I bought at Frye's or Best Buy;  and via the mini-VGA input, which is aa bit harder to find.

My 30" display was using the only HDMI port on the MacBook.   

Using DisplayLink and HDMI simultaneously on the MacBook has not worked well in the past.

Connecting a second USB display adapter has not worked well in the past.  Besides, I still need connect MacBook--USB-->BVU195--DVI--> ... to the GeChic, mini-VGA or micro-HDMI.

In my kit of cables and adapters, I had I mini-DisplayPort to DVI adapter, and  DVI to HDMI adapter, as well as my HDMI to micro-HDMI cables.   So I hooked that up:




DisplayPort-to-DVI adapter


DVI-to-HDMI adapter


micro-HDMI port

GeChic 1502I

This worked (a bit to my surprise).  And I have not yet seen the display memory overrun problems that plagued my past attempts to have a 3rd external display on my MacBook.  (Possibly because the GeChic has fewer pixels.)

After much screen blanking and resetting, the MacBook came up.

Also connected: external DCIN for the GeChic (USB caable), aand USB for the touchscreen interface.

At first I wanted to use the GeChic upside down, because the cabling was easier than way. The MacBook understood this, after the usual hassle of having to rotate the display.  (Side note: I wish that more external displays could rotate locally, as opposed to depending on software on the PC.)

Things seemed good, until I started trying to use the GeChic touchscreen.

First problem:  if my big 30" display was the "main" monitor for the MacBook, touching the GeChic moved the cursor on the big display, not on the non-mirrored display extended to the GeChic.

Second problem: the GeChic was upside down.  Rotating the display in the Mac preferences rotated the display - but not the touchscreen.    I could not find any way to rotate the touchscreen on the MacBook.

Third problem:  in these configurations the MacBook kept - not exactly hanging or crashing, although I wonder if something almost as bad was happening.  The first two or three touches worked, but then the MacBook blanked all screens, and logged me out.  I don't THINK it crashed or rebooted, but it might as well have.   

So I gave in and turned the GeChic rightside up, and rearranged the cables to reach.

Given this, it seems to be working okay.  So far.

... Nope.  I just tried touching the GeChic screen, and the same screen blank / must type password and log back in problem occurred.   It was working for a while - I could move windows around by touch, etc. -  but has stopped working.

When I thought that all was working okay, I was going to pontificate on how I have never seen such problems with Windows - somehow windows managed to recognize that the touchscreen and display came from the same device.  But not Mac.

I tried connecting the GeChic via HDMI, and the 30" display via the DisplayPort-DVI-HDMI 2 adapter kluge.  This may have worked - the MacBook did not do that funny not-quite-a-crash when I touched the GeChic.  But the 30" monitor could not be driven at full resolution across DVI.

I happened to have with me my home Thunderbolt/DisplayPort-to-dual-DVI+USB adapter. No avail - still got the funny not-quite-a-crash when I touched the GeChic.

Thinking, I wondered if the problem might be that the GeChic touchscreen USB connection was being routed through a USB hub (an IOGear 7-port USB 2.0 hub).  Perhaps there is some sort of ID from the GeChic USB that can be correlated to a similar ID on the HDMI input, that somehow got filtered by the external USB hub.  Seems unlikely, since the Mac probably has an internal USB hub inside its case.   But I tried it anyway - connecting the GeChic USB touchscreen output directly to the MacBook.     Failed first try, using a thin standard USB A to microUSB cable.   Switched to the heavier 2 standard USB A to microUSB cable that GeChic provided.

... Success.  So far.  15 minutes. ... Nope - after a while, touch the screen and the MacBook does that funny not-quite-a-crash again.

(At least I didn't lose the notes I have typed into this blog.)

(Does anyone at Apple realize how annoying it is that display preferences ungathers every time the display configuration changes?  Why not put a gathered window on each?)


Finally, I did what I should have done first thing: I plugged the GeChic into my MacBook by itself.  No other displays.  Same symptoms.

I was misled by it "almost" working - by the display working immediately, and by the touchscreen working at first -- but then producing "not quite crashes" later.

I was misled by my familiarity with Mac multi-display problems and workarounds.  I wasted time working around incorrect guesses as to the root cause.

Plus, I was misled by my windows experience, where I have plugged in any number of touch devices - Wacom tablets, Cintiq, etc. - with no problem.  Not so for Apple, apparently.

I had already googled GeChic and Mac.  I was misled by reports that it worked; also, GeChic themselves said that it worked.   Later googling, after wasting all of that time, reveals that Macs are notorious bad at touchscreens: Apple's attitude seems to be "iOS=>touch, Mac=>no touch".   There are third party companies that provide $$$ Mac touchscreen drivers/

'via Blog this'


Andy "Krazy" Glew said...

By the way, Duet Display has been having problems because of iPad timeouts. General>Auto-lock was greyed, stuck at 2 minutes. No, not Low Power Mode - apparently my company's IT department imposes a 2-minute auto-lock as a condition for connecting to the company's Exchange server.

The same IT department that refuses to buy me a touchscreen laptop.

So: I can use Duet Display on my iPad. Or I can connect to my company email.


Andy "Krazy" Glew said...

Crap piles up... my USB keyboard now refuses to work.

Andy "Krazy" Glew said...

Googlind found quotes such as: "the world leaders in developing such touchscreen drivers (for multiple OS’s) are Touch Base [2] – and with their Universal Pointer Device Driver (UPDD) and ‘UPDD Gestures.app’ "


=> 171$ for a supposedly working Mac touchscreen driver.


Andy "Krazy" Glew said...

I have been happily using Duet Display to extend my MacBook --usb--> iPad Mini. Only downside being that I had to unlink the iPad from my company's email account - which means that I cannot use the iPad to read email, e.g. when on a treadmill at gym.

As mentioned above, MacBook touch support for the GeChic display is very bad. http://touch-base.com sells supposedly better drivers for 171$, but have not tried.

Though I might try an Android screen extension solution.

Airplay - works, {MACBOOK,?WindowsPC?} --wifi--> {IOS{wifi,usb}-->Android. Supposed to work, but does not

FAIL: Splashtop XDisplay Wired macbook-->{usb}-->Android. Supposed to work, but does not. Not going to try wifi


Google Chrome Remote Desktop works MACBOOK--wifi-->Android (and probably anywhere Chrome runs).

Downside: this does not create an extra display - instead it mirrors. But usable as a last resort, e.g. if am mainly working on a big 30" monitor - move my auxiliary stuff to laptop display, and mirror that.


Teamviewer and Skype both have remote screen viewing, probably with same mirroring approach as Google Chrome Remote Desktop.


Sources of complexity:

a) network - wifi, vs. USB. wish there was a generic private net over USB

b) display device driver

Much of the complexity seems to be due to the necessity to install a new display device.

b.1) For much of what I want to do, I don't need a full display - I really just want to send one app window over to iOS/Android/other touchpad. One wonders if the host could avoid the need to install a kernel device driver by accessing and streaming am app window contents across VNC (and whatever connection), to one of the many VNC clients on iOS/Android/whatever.

If this could be done, I wonder create my window, move it offscreen, but still hopefully see its contents on external device. Assuming window manager does not optimize away offscreen drawing.

Bonus points if an app window can be installed as a targety for a proper display.

b.2) X Windows: an extra display, please?