Udaysinh Sapate
← Writing

30 Sept 2026 · 3 min read · — reads

my Lenovo Tab M8 is my third monitor now (and my webcam)

Reading

Size

The whole point of rooting the Tab M8 was to hang it on the wall next to my desk and use it as a third screen for my laptop. Wired, because i didn't want it eating my Wi-Fi, and light on the laptop, because it's a laptop.

I went with spacedesk, which can drive an Android tablet as a Windows display over a plain USB cable using Android's accessory mode. Setting it up took two minutes. Getting it to stay connected took a lot longer.

First, spacedesk sat on "IP validation in progress..." forever. That turned out to be Portmaster, the firewall i run, dropping the viewer's traffic underneath Windows Firewall, so nothing even showed up in Windows' own logs. A per-app exception fixed it.

The second problem was worse. Every couple of minutes the display just dropped, and the drops kept landing around the same 2:06 mark. The culprit was Samsung's USB driver, left over from an old phone. It claims Google's generic accessory ID (18D1:2D01), which is exactly the one spacedesk uses, and then fails on it. So i uninstalled it, and its uninstaller took spacedesk's own USB driver down with it. Repairing spacedesk and force-binding its driver to the device brought it back. Since then the connection stays up well past the old two-minute mark.

A few more things i learned the annoying way:

  • The tablet's USB has to be in File Transfer (MTP) mode. In adb-only mode Windows hands the whole device to the adb driver and spacedesk can't switch it into accessory mode.
  • Changing the USB mode with setprop persist.sys.usb.config while spacedesk is connected kills the session instantly.
  • The screensaver and screen timeout have to go, otherwise your "monitor" falls asleep on you.

It hangs upside down on the wall, so the Windows side flips that display and sets it to the tablet's native 1280x800. There's a small script for that, and another one that closes spacedesk's nag popup when Windows starts. Both are in the GitHub repo, along with the driver fix.

the webcam part

Then i thought, the tablet has a camera, why not use it as a second webcam at the same time as the display. I already had Camo installed, so that went first. Camo ships its own adb (version 1.0.40), and whenever something started a different adb version, the two servers killed each other and every USB tunnel to the tablet died with them. I ended up keeping a copy of adb 1.0.40 just for the tablet.

DroidCam puts a watermark on the free version. IP Webcam plus a Windows "IP camera adapter" worked for a bit, until the adapter started crashing every app that opened it. So i built my own Windows 11 virtual camera out of Microsoft's camera sample. It reads the tablet's MJPEG stream over an adb forward, flips it 180° because of how the tablet hangs, and shows up as "Tablet Camera" in every app. Discord sees it fine. Legcord (a third-party Discord client) still shows both my cameras as a single device, and i've decided that's Legcord's problem.

IP Webcam had one more thing i couldn't live with: a permanent "IP Webcam is monitoring the area" banner on the tablet. So in the end i dropped it and wrote a tiny camera server into the tablet's home screen app instead. It only turns the camera on while the laptop is actually reading from it.

The virtual camera's source and installer are in the repo too. That home screen app is where this whole thing got out of hand. Next post.



← All writing