DisplayCasting

Differences between revisions 1 and 33 (spanning 32 versions)
Revision 1 as of 2015-12-02 12:28:52
Size: 1882
Editor: morphis
Comment:
Revision 33 as of 2016-04-22 17:40:17
Size: 4884
Editor: morphis
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
'''WARNING: THIS IS FOR DEVELOPERS ONLY FOR NOW. DON't EXPECT ANYTHING TO JUST WORK OR BE USER FRIENDLY''' '''WARNING: THIS IS FOR DEVELOPERS ONLY FOR NOW, DO NOT TRY IT ON YOUR DAILY-USE DEVICE. DON'T EXPECT ANYTHING TO JUST WORK OR BE USER FRIENDLY'''
Line 5: Line 5:
This page describes how you setup the current in-development work for our display casting work also known as Miracast/WiFi Display. '''WARNING: This currently only works on the upcoming Meizu MX Pro 5 aka turbo. There is work in-progress to get this work on other devices as well.'''

This page describes how to setup the current in-development work for our display casting work also known as Miracast/WiFi Display.

== Testing on turbo ==

If you're testing this on turbo you need to flash a specific device tarball first. You can find the required device tarball [[https://private-fileshare.canonical.com/~alextu/zhongshan/images/mophis/device.tar.xz|here]].

You also need

 * a recovery image with ADB support enabled. Download it from [[wget https://private-fileshare.canonical.com/~alextu/zhongshan/images/recovery.img|here]]
 * a prebuilt version of ubuntu-device-flash from [[https://private-fileshare.canonical.com/~morphis/ubuntu-device-flash|here]]

Flash it with ubuntu-device-flash

{{{
$ ls -alh
-rw-rw-r-- 1 simon simon 103M Apr 22 19:03 device.tar.xz
-rwxrwxr-x 1 simon simon 137 Apr 22 18:59 disable-gpg.sh
-rw-rw-r-- 1 simon simon 24M Apr 22 19:01 recovery.img
-rw-rw-r-- 1 simon simon 7,0M Apr 22 19:04 ubuntu-device-flash


$ cat disable-gpg.sh
#!/bin/bash
adb shell touch /etc/system-image/skip-gpg-verification
adb shell /sbin/system-image-upgrader /cache/recovery/ubuntu_command

# Boot your device into fastboot boot via Power + Volume down

$ sudo ./ubuntu-device-flash -v touch --device turbo --channel ubuntu-touch/rc-proposed/meizu.en --device-tarball device.tar.xz --run-script disable-gpg.sh --recovery-image recovery.img --bootstrap
}}}

When you see

{{{
Done upgrading: Fri Apr 22 17:16:10 GMT 2016
}}}

run

{{{
$ adb reboot
}}}
Line 9: Line 52:
Install silo 0 Install silos 24 and 46
Line 12: Line 55:
$ citrain device-upgrade 0 <your pin> $ citrain device-upgrade 24 <your pin>
...
$ citrain device-upgrade 46 <your pin>
Line 15: Line 60:
After the silo is installed install silo 40 for an update for wpa-supplicant If citrain for silo 24 hangs with something like https://paste.ubuntu.com/15986810/ do the following:
Line 17: Line 62:
{{{
$ citrain device-upgrade 40 <your pin>
}}}
 1. Kill citrain
 2. Adb into the device, kill pending dpkg and apt-get
 3. Run: sudo dpkg --configure -a on the device
 4. Rerun: citrain 24 <your pin> from the host
 5. Continue with installing silo 46
Line 21: Line 68:
After your device has installed both silos you're read to go. After your device has installed the silo you're ready to go.
Line 25: Line 72:
All necessary steps are documented [[https://bazaar.launchpad.net/~morphis/miracast-service/trunk/view/head:/docs/usage.txt|here]] but we will describe this a bit more in detail here. '''NOTE: To connect with the Microsoft WiFi Display dongle you have to connect it with an Android device currently first before Ubuntu is being able to stream properly to it. Otherwise you will just get a black screen.'''
Line 27: Line 74:
First of all you need a Miracast / WiFi display captable sink device. Most modern Smart TVs support this or you can buy a dongle from Amazon like the Microsoft Wireless Display one. First of all you need a Miracast / WiFi display capable sink device. Most modern Smart TVs support this or you can buy a dongle from Amazon like the Microsoft Wireless Display one.
Line 29: Line 76:
Search for available display devices: The first step to discover available display is through the settings application.

 1. Open settings application
 2. Navigate to the new WiFi Displays page which sits under the Brightness / Displays page
 3. Wait for your display device being discovered
 4. Once you have one you want to connect to press the connect button
 5. The display will be now connected and you should see the Unity8 desktop

If you want to disconnect from the external display just pull down from the top of the display on the phone display. This will give you a disconnect button.

You can control the user interface either by the virtual touchpad the phone display shows once an external display is connected or by connected a bluetooth mouse and keyboard.

On the other side we have a small utility called ''aethercastctl'' which helps you to deal with the service.

You can scan for available devices
Line 32: Line 93:
$ gdbus call -y -d org.wds -o / -m org.wds.Manager.Scan # aethercastctl
aethercastctl> scan
aethercastctl>
[CHG] Manager Scanning changed: true
Device 4e:74:03:64:86:9e 'Aquaris_E4.5' added
Device 4e:0b:be:f9:78:75 'MicrosoftDisplayAdapter_75' added
Line 35: Line 101:
After the search is done you can connect with found devices. As of right now there is no way to list available devices which will change soon. You have to know the MAC address of the remote device until we're able to list them. You can stop the miracast-service and start it manually to get some more verbose output also showing the MAC address of found devices or by running these commands After the search is done you can connect to one of the found devices.

To list all available devices you can use the ''devices'' command.
Line 38: Line 106:
$ wpa_cli -p/var/run/p2p0_supplicant
# p2p_peers
aethercastctl> devices
Device 4e:0b:be:f9:78:75 'MicrosoftDisplayAdapter_75'
Device 4e:74:03:64:86:9e 'Aquaris_E4.5'
Line 42: Line 111:
This will list all found WiFi Direct devices. Pick the one you want to connect to and run Once you know which device you want to connect to you can simply issue the ''connect'' command and wait for the device to get connected.
Line 45: Line 114:
$ gdbus call -y -d org.wds -o / -m org.wds.Manager.ConnectSink \
    'aa:bb:cc:dd:ee'
aethercastctl> connect 4e:74:03:64:86:9e
aethercastctl>
[CHG] Manager Scanning changed: false
[CHG] Manager State changed: connected
Line 49: Line 120:
where you use the MAC address of your device. Once the device is connected you should see the Ubuntu UI on the remote display device. If you run into any issues, logging details are at: /var/log/upstart/aethercast.log
Line 51: Line 122:
Now the connection should be established and the screen output should appear on your remote display. == Troubleshooting ==

 * If connections fails make sure you connected an Android device first to the Microsoft WiFi Display Dongle
 * If connections fails power cycle WiFi or reboot the device

Overview

WARNING: THIS IS FOR DEVELOPERS ONLY FOR NOW, DO NOT TRY IT ON YOUR DAILY-USE DEVICE. DON'T EXPECT ANYTHING TO JUST WORK OR BE USER FRIENDLY

WARNING: This currently only works on the upcoming Meizu MX Pro 5 aka turbo. There is work in-progress to get this work on other devices as well.

This page describes how to setup the current in-development work for our display casting work also known as Miracast/WiFi Display.

Testing on turbo

If you're testing this on turbo you need to flash a specific device tarball first. You can find the required device tarball here.

You also need

  • a recovery image with ADB support enabled. Download it from here

  • a prebuilt version of ubuntu-device-flash from here

Flash it with ubuntu-device-flash

$ ls -alh
-rw-rw-r--  1 simon simon 103M Apr 22 19:03 device.tar.xz
-rwxrwxr-x  1 simon simon  137 Apr 22 18:59 disable-gpg.sh
-rw-rw-r--  1 simon simon  24M Apr 22 19:01 recovery.img
-rw-rw-r--  1 simon simon 7,0M Apr 22 19:04 ubuntu-device-flash


$ cat disable-gpg.sh
#!/bin/bash
adb shell touch /etc/system-image/skip-gpg-verification
adb shell /sbin/system-image-upgrader /cache/recovery/ubuntu_command

# Boot your device into fastboot boot via Power + Volume down

$ sudo ./ubuntu-device-flash -v touch --device turbo --channel ubuntu-touch/rc-proposed/meizu.en --device-tarball device.tar.xz --run-script disable-gpg.sh --recovery-image recovery.img --bootstrap

When you see

Done upgrading: Fri Apr 22 17:16:10 GMT 2016

run

$ adb reboot

Install necessary silos

Install silos 24 and 46

$ citrain device-upgrade 24 <your pin>
...
$ citrain device-upgrade 46 <your pin>

If citrain for silo 24 hangs with something like https://paste.ubuntu.com/15986810/ do the following:

  1. Kill citrain
  2. Adb into the device, kill pending dpkg and apt-get
  3. Run: sudo dpkg --configure -a on the device
  4. Rerun: citrain 24 <your pin> from the host

  5. Continue with installing silo 46

After your device has installed the silo you're ready to go.

Connect with a remote display

NOTE: To connect with the Microsoft WiFi Display dongle you have to connect it with an Android device currently first before Ubuntu is being able to stream properly to it. Otherwise you will just get a black screen.

First of all you need a Miracast / WiFi display capable sink device. Most modern Smart TVs support this or you can buy a dongle from Amazon like the Microsoft Wireless Display one.

The first step to discover available display is through the settings application.

  1. Open settings application
  2. Navigate to the new WiFi Displays page which sits under the Brightness / Displays page

  3. Wait for your display device being discovered
  4. Once you have one you want to connect to press the connect button
  5. The display will be now connected and you should see the Unity8 desktop

If you want to disconnect from the external display just pull down from the top of the display on the phone display. This will give you a disconnect button.

You can control the user interface either by the virtual touchpad the phone display shows once an external display is connected or by connected a bluetooth mouse and keyboard.

On the other side we have a small utility called aethercastctl which helps you to deal with the service.

You can scan for available devices

# aethercastctl
aethercastctl> scan
aethercastctl> 
[CHG] Manager Scanning changed: true
Device 4e:74:03:64:86:9e 'Aquaris_E4.5' added
Device 4e:0b:be:f9:78:75 'MicrosoftDisplayAdapter_75' added

After the search is done you can connect to one of the found devices.

To list all available devices you can use the devices command.

aethercastctl> devices
Device 4e:0b:be:f9:78:75 'MicrosoftDisplayAdapter_75'
Device 4e:74:03:64:86:9e 'Aquaris_E4.5'

Once you know which device you want to connect to you can simply issue the connect command and wait for the device to get connected.

aethercastctl> connect 4e:74:03:64:86:9e
aethercastctl> 
[CHG] Manager Scanning changed: false
[CHG] Manager State changed: connected

Once the device is connected you should see the Ubuntu UI on the remote display device. If you run into any issues, logging details are at: /var/log/upstart/aethercast.log

Troubleshooting

  • If connections fails make sure you connected an Android device first to the Microsoft WiFi Display Dongle

  • If connections fails power cycle WiFi or reboot the device

Touch/DisplayCasting (last edited 2016-08-23 08:25:41 by morphis)