Use another PC with Surface 2 RRS feed

  • Question

  • Hi,
    I've just seen the performance of computer integrated in Surface 2 and I'm not satisfied with it. 
    SUR40 has one HDMI input, but there is a way to give touch inputs to another external computer?

    -- Mattia Diffini www.practix.net

    Wednesday, February 22, 2012 1:13 PM

All replies

  • I'm not quite sure what you are looking for (what exactly isn't satisfactory in the internal PC?), but we use WCF services in case we need to transfer touch inputs (or other things) between the SUR40 and other machines. Works quite well...

    Maybe you can explain a bit more what you want to achieve that you cannot on the SUR40?



    Bart Roozendaal, Sevensteps Microsoft MVP for Surface

    Wednesday, February 22, 2012 3:57 PM
  • So do you tranfer the data of finger, blob, tag via network on another pc?

    The internal PC (you know is based on notebook components...) is simply slow with some graphic effects and we need more computing power by CPU and GPU for our application.



    Mattia Diffini www.practix.net

    Wednesday, February 22, 2012 4:06 PM
  • It depends on the specific needs for the app what we do. If we can avoid it, we're not sending all the touch data because that's a lot.

    Did you check out the capabilities in XNA? Typically, that gives way better performance than WPF. We use WPF because it's so much more convenient for the typical assignment, but for some hardcore things (like games) we use XNA.


    Bart Roozendaal, Sevensteps Microsoft MVP for Surface

    Wednesday, February 22, 2012 4:11 PM
  • Thanks!

    Obviously XNA gives more performance than WPF. Btw using WCF services to send touch inputs is an interesting approach. But what is the utility of HDMI input on SUR40 if we can use directly only the integrated computer?


    Mattia Diffini - www.practix.net

    Wednesday, February 22, 2012 4:15 PM
  • HDMI input is for when you want to use it as a television like I will some day in my living room :-)


    Bart Roozendaal, Sevensteps Microsoft MVP for Surface

    Wednesday, February 22, 2012 4:29 PM
  • Hey Bart -- I'd be interested in learning more about the WCF solution you describe, if you can share. Sounds interesting!
    Wednesday, February 22, 2012 7:18 PM
  • Can't share code, but we can spend a couple of words on it next week. It's pretty basic stuff: catch (Pre)touchdown, TouchMoved, TouchUp. Construct a WCF message from the data and send it to an end point.

    We've also done it the other way around: create a buffer on the 'Surface' end, and poll from a client. The latter solution gives you the opportunity to send more 'TouchEvents' at one call. The receiving end can subsequently interpret that data.

    What we have done more regularly is using Commands to call WCF methods on another computer to trigger some action (like starting a movie). Also pretty basic WCF stuff, easy to implement and wows customers without exception.

    CU next week.


    Bart Roozendaal, Sevensteps Microsoft MVP for Surface

    Wednesday, February 22, 2012 7:25 PM
  • Hey Bart,

    I'm also interested in learning more about your solution. 

    Is it possible to process the touches on the SUR40 and send them to an external PC that's being used for rendering (plugged in via the HDMI port)?

    I whipped up a quick demo: had a touch input application sending the data to another machine on the same network and it was extremely laggy (when watching the objects move about the external machine's display). Then when I tried to connect the external machine to the SUR40's display via HDMI, my touch processing application running on the SUR40 stopped transmitting touches. It seems that when you switch display inputs, it turns off the touch processing. Is there any way to change that behaviour?

    If it is possible to continue to process touches on the SUR40, I'll take a look at some other options for the network layer like writing a socket client/server.



    Monday, October 1, 2012 4:02 PM
  • I'm not sure what you mean by connecting another pc using HDMI. HDMI is for video, not for connecting computers.

    Connecting an external display to you HDMI port should not stop touches from processing. If you duplicate the display, it should still work.

    I'd be happy to help you in your project; if you want to make use of our resources, please send me an email at bart.roozendaal@sevensteps.nl



    Bart Roozendaal, Sevensteps Microsoft MVP for Surface

    Tuesday, October 2, 2012 8:34 AM
  • Ok, here's a very simple experiment. I write an application that prints the touch coordinates to the console. I run it on the SUR40. Great, I see my X,Y coordinate pairs. When I change the input source from PC/Surface to HDMI, the application running on the SUR40 no longer receives touches. I want the application to continue to receive touches. How do I do that?

    Wednesday, October 3, 2012 3:45 PM
  • I still am not sure what you are doing. The application is running on an other computer and you are using the SUR40 as a HDMI display for that computer?

    In that situation the SUR40 is a simple display and doesn't process touches, and I don't think you can get them, but am not 100% sure. I've never heard of anyone trying that.

    I think someone from the Pixelsense team needs to answer that, but I don't think it's possible to get the touches from the SUR40 display to go to another computer when you are using the SUR40 as a display.

    I am curious though why you are not satisfied with the performance of the SUR40. What's not fast enough? Although it's not the top, top-machine that you can have, typically we never have performance issues with it. Enough other problems, but not in performance.

    If you can create a small demo application showing the slow performance of your app on SUR40 and send it to bart.roozendaal@sevensteps.nl, I'd be happy to see what's up with it.

    Hope it helps,


    Bart Roozendaal, Sevensteps Microsoft MVP for Surface

    • Proposed as answer by marcglobacore Wednesday, October 3, 2012 4:38 PM
    Wednesday, October 3, 2012 3:53 PM
  • I'm developing a photo gallery application that has thousands of large images (so there's no way to pre-load everything in the beginning). These images are also animating, and whenever I load in a new image, I can see the frame rate drop.

    It doesn't seem to make a difference if I load the images on another thread or the main thread, since I need to lock GraphicsDevice if I use a different thread other than the main one.

    I've run the application on a much more powerful computer, and I didn't notice any of the frame rate issues, so I thought I'd try the method I mentioned above.

    The fact that you CAN NOT process the touch on the unit while having another machine display the content is a huge oversight on Microsoft/Samsung's part.  You can do all this stuff with units from MultiTouch.


    Wednesday, October 3, 2012 5:16 PM
  • We've done a professional photo application that can handle tens of thousands of images (http://www.sevensteps.com/html/topic_7E2051C3-9E0B-429D-8E3E-FD98015224B3_AFB59B40-3B74-444B-A8CA-8063BD46D05F_2.htm) and it performs fine. Images are loaded from a cloud server in a different thread (using several simultaneous download threads in fact) and we also use a clever local caching system to up performance. We have the ability to download low res versions of the high res images first to give the user an image as soon as possible while the high res image is download in the background.

    I can't tell from what you write here what exactly is the issue or are the requirements of your app. I'd be happy to do a small bit of consultancy if you want to maybe get you going.

    If you want that, please contact me at bart.roozendaal@sevensteps.nl


    Bart Roozendaal, Sevensteps Microsoft MVP for Surface

    Wednesday, October 3, 2012 5:48 PM
  • I am also trying to use an external computer, and only use the on board computer to process touch data. The on board computer is insufficient to my needs for many reasons which cannot be overcome with software optimization. I've been experimenting and have discovered that the SUR40 does, in fact, continue to receive raw touch data even when displaying an external computer's desktop. Here is my setup:

    Start SUR40, attach external monitor to the HDMI out. Choose to mirror the displays.

    Launch the raw image viewer from the SDK examples, it appears on both the SUR40 and the external monitor.

    Attach an external computer to the HDMI in.

    When I touch the SUR40 I can see my hands on the mirrored display just as I could before.

    So, the on board computer is still getting touch data! Great! However, when I try this with applications that process that data (i.e. recognize a finger, blob or tag), nothing appears on the mirrored display. This problem definitely seems to be a software, not a hardware, issue. The on board computer continues to run and receive touch data even when there is HDMI in. Is there any way to make it also process this data? It seems extremely silly to me that this should be impossible.



    Friday, October 12, 2012 3:45 PM
  • Hei,

    It's 4 years later, but it might help other people.

    It is possible to connect an external input on the SUR40 while still receiving the touch events on the computer.

    You need to open the table and switch a few HDMI cables. Connect the HDMI output of the SUR40 computer to HDMI IN port and connect your external source to the HDMI port where the SUR40 computer was connected to.

    So you can receive touch events on the SUR40 computer and send them to a faster computer that will be displayed on the screen.

    Thursday, March 9, 2017 3:06 PM
  • Thanks! 4 years later but "better late than never". I am a bit confused by how your describe the cable re-plugging. Can you be a bit more specific about:

    - [HDMI output of the SUR40] ... (are you referring to the external HDMI output of the SUR40 or the HDMI Output cable leaving the motherboard?)

    -  [HDMI In port] ... of which machine

    Maybe a quick diagram would clear this up?

    Friday, May 18, 2018 4:40 AM
  • I'm curious that nobody has tried to upgrade the PC in the SUR40 with a more powerful one. What input does the touch screen use to (physically) pass the data to the OS...is it a USB input? HDMI?  Maybe we can make an adapter that would allow us to swap in a more modern board?

    I'm interested to hear about any progress in this - I'd like to put a tiny form factor i5 or i7 system in my table and set it up with dual boot - one would be the stock Windows 7 OS, and the other would be Windows 10. 


    Monday, August 27, 2018 4:23 PM
  • More easily said than done. The mobo in the SUR40 is proprietary. It contains an FPGA which processes all the raw video data from the SUR40 light sensor and reduces it to a set of "blobs". So upgrading the mobo is not an option. But connecting it to a second computer is possible as described above.
    Friday, August 31, 2018 7:52 PM