I cannot find any guide that details how this is done, and there are a lot of questions unanswered on this forum, so I am writing this to share my setup and help gather information.
For those who are not familiar: Pixel 8 and Pixel 8 Pro have the hardware capability to output video through DisplayPort alt mode (or commonly understood as HDMI or DisplayPort output through USB-C). This can be used for either screen mirroring to use your phone on a large screen, or screen extension which gives you a desktop-like experience with floating windows. It is turned off in software on the stock OS, but GrapheneOS has enabled this feature. Using a Pixel 8 (Pro) with keyboard and mouse is possibly one of the most secure and private desktop setup, if not the best.
Disclaimer: (1) This is a description for my experience. YMMV. (2) Using this feature requires enabling developer options, which are frown upon in this community because of the security implications. Do not use this feature if the best level of smartphone security is desired. (3) Google is not enabling it because the feature is not finished and has a lot of bugs right now. The experience can be frustrating.
Prerequisites
- Pixel 8 or Pixel 8 Pro running the latest version of GrapheneOS (based on Android 14 QPR1 at the time of writing).
Previous generations do not have the hardware for video output.
- A way to display video from USB-C. Examples:
- Both (1) a monitor that accepts USB-C connections directly, and (2) a USB-C cable supporting video signals. Regular USB-C cables likely cut corners and do not support video signals, so you may have to get one that specifically supports it. Or,
- A (good) USB-C hub supporting video output into HDMI, plus your regular HDMI cable and monitor. I have this setup with a hub from Anker, and can confirm that this model works. Or,
- A lapdock like NexDock 360. I have this setup too, but the result is barely usable (more on this later). It is possible that future AOSP updates can fix issues here, but I would not hold my breath.
Steps for screen mirroring
For lapdocks and monitors with USB-C support:
- Unlock your phone.
- Plug the compatible USB-C cable into your phone and your lapdock or monitor.
- If the phone freezes, disconnect and reconnect.
For USB-C hubs:
- Unlock your phone.
- Plug in the USB-C hub into your phone.
- Plug the HDMI cable into your USB-C hub and your monitor.
- The USB-C hub likely requires power. If it does, plug in its power supply, which may be a USB-C charger cable into its designated power port.
- If the phone freezes, disconnect and reconnect.
Whichever setup you choose, the monitor should now display exactly what your phone is showing. Rotate your phone for a wide view. Further, you can long-press the home screen background, press home settings, and turn on Allow home screen rotation
to get a wide home screen view.
For the setup to be more useful, connect a keyboard and a mouse either wired using the USB-C hub (if your monitor has USB ports, plugging them there works too) or wirelessly using Bluetooth. Note that Bluetooth connections are not nearly as secure as wired connections, and it is recommended to use a wired connection, at least for the keyboard.
Steps for screen extension
- Enable developer options: in Settings (owner's profile), go to
About phone
, scroll to the bottom, and repeatedly tap on Build number
until it says you are now a developer.
- Enable desktop mode: in Settings, go to
System
-> Developer options
-> scroll to about 90% of the page, and
a. Turn on Force desktop mode
, and tap reboot later
for now.
b. (optional) Turn on Enable freeform windows
, and tap reboot later
for now. It is possible to leave this off, but that means your monitor is just going to show one full-screen app at a time, like a tablet.
c. (very optional) Turn on Force activities to be resizable
and Enable non-resizable in multi window
. I do not know what these two options do in practice.
- Reboot your phone.
- Setup the cables and connect peripherals the same way as the steps for screen mirroring.
Now, your monitor should show your wallpaper and a 9-dot icon on the bottom right. This mean you have finished the setup. Use your mouse to click on the 9-dot icon to show your app drawer, where you can launch your apps on the monitor instead of the phone screen. They will be windowed if you have turned on Enable freeform windows
.
Limitations (with USB-C monitor or USB-C hub)
- A ton of bugs. See troubleshooting section for fixes for some common issues.
- Alt-Tab works only on the phone side, and cannot be used to switch between apps on the monitor. There is no taskbar.
- Windowed browser viewport size is additional fingerprinting information.
- Security implications of turning on developer options.
- Privacy implications of sending video signals out of the phone.
NexDock-specific limitations
First of all, yes, my NexDock 360 "works" and is able to turn my phone into a laptop with a touch screen. However: a huge drawback right now is that the desktop mode has a nasty bug with keyboard input. Whenever the I-beam cursor shows up in a textbox anywhere and the keyboard idles for about 5 seconds, the screen flickers and bugs out, and the setup is unusable until you disconnect and reconnect the USB-C cable. This includes textboxes on webpages, apps on your monitor, and apps showing on your phone. With many webpages automatically focusing on input textboxes, some hidden, this can be very frustrating. But if you carefully avoid them, for example by doing reading activities only, or switching focus to something other than a text box (or to another app on the monitor) and switching back, or keep typing and deleting whenever the I-beam shows up, this setup can work for an extended period of time.
FAQ
Q: What do I do if the screen glitches out or is not responsive?
A: Here are some tips for common issues:
- If the screen randomly glitches out or freezes, you may have to disconnect and reconnect the phone.
- Pressing the Meta key (or Windows key) on the home screen causes the home screen to show up as an app on the monitor, which looks like the screen glitching out. You can press Meta (Windows) + Enter to dismiss it.
- Occasionally after unlocking, the mouse shows up on the phone, not the monitor, and you may have to disconnect and reconnect the phone.
- Sometimes the app you launch on the monitor shows up as a full-screen app, and only the top-left is functional while the rest (either all-white or shows the home screen) is not responsive. You can press Meta (Windows) + Enter to dismiss it and reopen it to return it to a window. Locking and then unlocking the phone works too.
Q: Does this work with secondary user profiles?
A: Yes.
Q: Does the mouse show up on the extended desktop?
A: As of 2023121200
, yes.
Q: My setup is not working.
A: Double check that your cable or hub specifically supports video signals. Most do not. If you are using a USB-C hub, double check that it is being properly powered. Last but not least, please double check that your monitor is on and set to display the signal from the correct source.
Help, tips, and suggestions are always welcome.