kbumsik / VirtScreen

Make your iPad/tablet/computer into a secondary monitor on Linux.
GNU General Public License v3.0
1.67k stars 111 forks source link

Transfer image through USB #31

Open junocomp opened 5 years ago

junocomp commented 5 years ago

Is it possible to transfer the image through USB, similar to YamDisplay? Currently is very laggy when using WIFI only.

kbumsik commented 5 years ago

The performance issue is mainly because of the poor performance of VNC that lacks modern video compressions.

Depending on a device you use, there are some tricks to improve connectivity between the host and the client via direct network connection, not via a wireless router (e.g. Hotspot, USB tethering). owever, the overall experience won't be dramatically improved since the biggest bottleneck is not on the network.

Please tell me about your VNC client device:

junocomp commented 5 years ago

I am using RealVNC iPad 4 WIFI-only iOS 10.3.3 1024x768 Resolution

I have installed ipheth-utils and it detects my ipad as a wire connection but it won't enable it.

kbumsik commented 5 years ago

As long as a TCP/IP communication established between the iPad and the host via USB, you certainly can connect it. What's the output of ip addr command while ipheth is connected to the iPad?

junocomp commented 5 years ago
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 94:c6:91:16:7f:59 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.12/24 brd 192.168.0.255 scope global dynamic noprefixroute eno1
       valid_lft 51205sec preferred_lft 51205sec
    inet6 fd86:879:6d5b:1:8021:2bd5:25d2:58a0/64 scope global temporary dynamic 
       valid_lft 7173sec preferred_lft 7173sec
    inet6 fd86:879:6d5b:1:e065:6cda:83e0:5018/64 scope global temporary deprecated dynamic 
       valid_lft 7173sec preferred_lft 0sec
    inet6 fd86:879:6d5b:1:2118:7ba9:4392:8b68/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 7173sec preferred_lft 7173sec
    inet6 fe80::bfd0:32dd:548c:f235/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlp58s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether b0:35:9f:ff:74:6d brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global noprefixroute wlp58s0
       valid_lft forever preferred_lft forever
    inet6 fe80::58b4:c3f0:5be7:5bb2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: enp0s20f0u1c4i2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 5e:96:9d:9a:94:f4 brd ff:ff:ff:ff:ff:ff

It should be 4th one.

$ ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.12  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::bfd0:32dd:548c:f235  prefixlen 64  scopeid 0x20<link>
        inet6 fd86:879:6d5b:1:2118:7ba9:4392:8b68  prefixlen 64  scopeid 0x0<global>
        inet6 fd86:879:6d5b:1:e065:6cda:83e0:5018  prefixlen 64  scopeid 0x0<global>
        inet6 fd86:879:6d5b:1:8021:2bd5:25d2:58a0  prefixlen 64  scopeid 0x0<global>
        ether 94:c6:91:16:7f:59  txqueuelen 1000  (Ethernet)
        RX packets 8032174  bytes 9521264385 (9.5 GB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 5154335  bytes 2351464157 (2.3 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xdc200000-dc220000  

enp0s20f0u1c4i2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5e:96:9d:9a:94:f4  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
kbumsik commented 5 years ago

(I edited your above comment for better readability.) It looks like your iPad is recognized but no networking service available. I am not sure why but I guess because your iPad is WiFi only version that does not have USB hotspot feature.

Alternatively, you can connect your host PC via WiFi directly (bypass the router) by enabling a hotspot service on your laptop. It is a little bit complicated to enable a hotspot on the host PC, but fortunately there is a package called create_ap to automate the process.

NobodyXu commented 5 years ago

@giovannicaligaris Maybe you can consider using tightvnc? That might actually helps your problem. Since according to @kbumsik it is due to the lack of compression and this is exactly what tightvnc provides.

According to x11vnc, the dependency of this software:

image

It supports tightvnc and ultravnc file transfer. tightvnc use tight decoder which may speed up the transfer (actually ultravnc also has this feature), but I am unsure how well x11vnc supports this decoder. A peek at the performance comparsion provided by them seems that it does pretty good job.

tightvnc may suit you better since it offer remote-ripple on ipad, though not much people are using it.

Edit:

I asked a similar question LibVNC/x11vnc#101 on x11vnc.

NobodyXu commented 5 years ago

@giovannicaligaris I have found a potentially better alternative to remote-ripple on ipad of tightvnc -- [noVNC]. It can be run inside modern browers, including the one on iOS and Android and it is better maintained than remote-ripple on ipad (updated 9 days ago).

Supports all modern browsers including mobile (iOS, Android) Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG

asyba commented 5 years ago

(I edited your above comment for better readability.) It looks like your iPad is recognized but no networking service available. I am not sure why but I guess because your iPad is WiFi only version that does not have USB hotspot feature.

Alternatively, you can connect your host PC via WiFi directly (bypass the router) by enabling a hotspot service on your laptop. It is a little bit complicated to enable a hotspot on the host PC, but fortunately there is a package called create_ap to automate the process.

but connecting the host PC directly with WIFI to the iPad, this will prevent the host PC to access internet router? or is a separated connection?