Hacker News new | past | comments | ask | show | jobs | submit login
Scrcpy: Display and control your Android devices connected over USB or TCP/IP (github.com/genymobile)
681 points by thunderbong on April 29, 2023 | hide | past | favorite | 143 comments



Other notable features:

* Works in tandem with upstream android adb, so after usb(or wireless) debugging is enabled on the target device, there are no apps daemons or hacks needed and it just works.

* Install apks that are "unavailable for your device" in the official google play store (on things like chromecasts)

* Full Screen or screen section + audio recording

* Stream device screen when it's physically off on target device.

* scrcpy cli runs on macOS, Windows and Linux as well as containerized

* Option to connect over USB for insane performance and resolution


> Install apks .. on things like chromecasts

Once an apk is on a Chromecast, how does one launch it? I've loaded APKs onto a Fire Stick, but that OS actually has a launcher. For a Chromecast, would I be limited to launching via adb and apps that launch themselves by being cast to? That would still be useful, like for example SmartTubeNext is one of the apps I put on my Fire Stick (highly recommended) and in addition to launching via the GUI, it auto-launches when cast to. Would be great to move it to the Chromecast because it's the only reason I have a Fire Stick...


I think we are talking strictly the Chromecast with Google TV here, which is a full Android TV stick.


That makes way more sense than the simple Chromecast I thought we were talking about. Thanks!


Can you share more about using scrcpy to install APKs that are unavailable for the device via Play?


You can just drag and drop APK files onto the scrcpy window to initiate an install (it just does 'adb install' basically).


Does this mean i can install signal on my tablet?


As long as you can somehow receive the registration sms code on a different device, you should be able to. Mind it would deregister Signal from your phone though.


hmm.. my tablet is unlimited data 5g... I get txts on it all the time as its SIM inherited some random number that the previous person was on quite a few group txts.

Although, I confirmed that I can install anything or any OS updates I would like and the service "should work"

Its a great little device that costs me $15/month for unlimited data - so I downgraded my phone plan to the $30/month plan (I pay my cell plans a year in advance so I never have to worry about a monthly phone bill...) but now for $45/month I have both my phone and this tablet which is cheaper than the $50/month they wanted for 10 gigs of data on my phone plan...

now I just need to make the most of this Alcatel Tablet. (the battery life on this tablet is quite good!) but now I need to hot-spot with it over USB, but have to look at how to do so.


The real question is, where do you get trustworthy APKs, if you cant download them from playstore ?

You can already install an APK through the phone


Some devices don't have the UI for side-loading apks (TVs etc.). You can download apks from the publisher's website, 3rd party stores like F-Droid or IzzyOnDroid, or use Yalp Store to download directly from Google Play.


Google Play doesn't really guarantee safety. It can promise though :)


From aurora store, an alternative front-end for play store available on f-droid.


it's called 'sideloading'


How do you exclude (split tunneling config) the wireless part required for scrcpy, when using a VPN app? The IP of my wireless debugging option shows as the one handed out via the tunnel interface, not the one from my wifi network, and I can't find a way to make this an exclusion, as I make other apps, in the split tunneling option of the VPN app.


And does not require a rooted phone


Stupidly useful when I broke my phone in Antarctica and had to wait months for a replacement to arrive (it did, mere days before station close). Also a shout out to gnirehtet which is I think by the same devs? Reverse tether your phone for times when wifi and cell are both unavailable.


Many years ago, my Samsung S3's wifi chip broke. I had to resort to mobile data for everything. Luckily I was able to use gnirehtet to download apps/updates for some time until I was able to buy a new phone :)


Wow you went to Antarctica? Why?


I wintered for IceCube. Happy to answer any questions about careers. My background isn't in polar research and while I have a PhD in (unrelated) physics, it's not a requirement by any means. Lots of jobs down there just require specific skillsets (and there is plenty of IT work).

https://icecube.wisc.edu/


If you want to go to Antarctica for free find a PhD program they goes to Antarctica and you will get to go to Antarctica.


I think it would be super neat for 2 or 3 weeks. Maybe 2 months if you can go in the summer and spend time outside. In winter though? Oooooof no thanks!


Was curious about the cost:

    Overall Antarctica Cruise Cost [1]: 

    Low Budget     $9,340
    Mid-Range     $13,010
    Luxury        $26,100
Guess the prices will only go up once climate change fully deploys the 3-degrees-warmer world [2].

[1] https://www.antarcticaguide.com/antarctica-travel-cost#:~:te...

[2] Impacts of Climate Change in Antarctica, https://discoveringantarctica.org.uk/challenges/sustainabili...


I worked as a winterover, so I was paid to go. The cost of visiting the Pole is very high if you're there as a tourist (tens of thousands for a night). I believe some of the revenue does go towards science though, because the summer camps make use of e.g. the fuelling infrastructure for aircraft.

Cruises are also very expensive. Though they're quite popular with researchers because it's a side of the continent that you don't get to see if you're not working on the coast.


OP mentioned they lived on a station, not doing a cruise!


Probably science.


Or penguin videos


As a Genymobile employee, I'm happy to see this on HN! We use scrcpy internally also, it's really handy sometimes when we need to debug display issues with our Android emulator (Genymotion).

Romain is truly a talented developer, and deserves the success of scrcpy. If I remember correctly, scrcpy was also bundled with Genydeploy (an Android device provisioning solution) at the time.

Kudos Romain for your work!


Thank you for your kind words Guillaume :)


Last year my Samsung S20+ suffered the notorious "green vertical lines" and then soon after the "white out screens" (a pandemic-level hardware failure wave that has been widely reported), rendering it impossible to see clearly what is on the screen, even though everything else was still working.

Luckily because I was playing with scrcpy, I immediately knew it was my solution.

By using scrcpy to connect to a PC, I could still unlock the screen with my pattern or thumbprint, and when the app asks for passwords it is still possible to use the onscreen keyboard.


My 7 year-old phone has had a completely smashed screen for the past year. Thanks to this (super-easy-to-run script), I haven't felt the need to repair the screen at all.

10/10 would recommend.


That's a surprisingly great idea. A mobile phone can be used as a server, and for their capabilities, they are cheaper than Raspberry Pi when with some issues especially. Out of curiosity I just found an offer for a used Pixel 6 Pro for 70 EUR, supposedly only broken screen and the rest is working, where it has 12GB RAM with CPU Octa-core (copypasting: 2x2.80 GHz Cortex-X1 & 2x2.25 GHz Cortex-A76 & 4x1.80 GHz Cortex-A55), that's a fairly good offer.


how can you enable ADB/dev settings on the phone with a smashed screen?


Good question I did this once by plugging in a keyboard and mouse and using a combination of them to unlock the phone and enable onscreen dictation (meant for blind people, you move your mouse over the thing and it tells you what is under).

Mostly blind luck, clicking the windows button then typing out the unlock PIN code and enabling the voice detection via Ok Google I think although many things were tried.

Once the onscreen dictation was enabled we were able to navigate the phone by voice to do what we wanted (take all photos off it).

Edit: also some phones support video output via USB-C and then it is much easier. Unfortunately the one I was working on did not support that.


I'm also wondering this. I tried connecting a USB keyboard and a TV via HDMI but couldn't get the phone to unlock let alone the screen to show up on the TV.


Android is notorious for blocking usbc video out


Digitizer was still functional perhaps


Simple, just connect your mouse with an usb converter..


How are you supposed to know where you click without a screen?


I responded to a comment about a broken digitizer, not a smashed screen (perhaps I messed up or comment got changed)


Do I assume you already have adb/dev settings enabled?


It's an excellent piece of software, our team uses it throughout our workdays. Kudos to the devs for building and sharing with the world.


This tool is a godsend. I use it as a way to control my phone when I'm at my desk on my mac - with wireless adb, without even looking at the phone screen at all.

Allows me to continue using my phone as I use my mac with a kb and mouse.


So scrcpy over wifi??


Yup


If anyone's looking for an android project, please make one that forwards all hotspot traffic over whatever VPN is enabled. I guess the phone will need rooting.


For what it's worth: LineageOS (and probably other ROMs too) has a setting ("Allow clients to use VPNs") for this in the tethering settings screen. With root and four or five lines of bash script you can replicate this behaviour according to various StackExchange answers.

I'm not sure if this is a setting that comes from LineageOS or from upstream AOSP, but at least the feature is there as a starting point.

Edit: looks like it's a LineageOS feature: https://review.lineageos.org/c/LineageOS/android_frameworks_...


Thanks for these comments re LineageOS (& @ttarr). I dug out an old device I'd already installed it on and sure enough it works. Thanks so much :)


Try this https://github.com/pyamsoft/tetherfi It will route all hotspot traffic through your phone and vpn. Works even without root


That seems cool, but I'm looking for something that would be totally transparent to connected devices (i.e. wouldn't require reconfiguring them at all).


I think my Wireguard VPN already does this, sans root? I enable my VPN and my hotspot connected laptop is now routing its traffic via my house.

Or am I missing what you're looking for?


Are you sure? By default if you use a VPN, only apps on the device will use it. If you enable a wifi hotspot, any devices connected to the hotspot won't route their traffic over the VPN. Have you tried checking your IP from your laptop?


Why the down votes for this comment?

My Android does have that option, under: Hotspot and tethering > Allow clients to use VPNs.

Note however, my ROM is based on LineageOS, probably the reason why not everyone got it?


My Pixel 6 Pro doesn't seem to have this. I use Wireguard, and hotspot traffic goes directly to cellular data, not via VPN.


My device is a OnePlus phone. I don't see the option you're talking about in my hotspot settings, but maybe OnePlus made it the default.


also available on CalyxOS


Are you running lineage or some other custom build? Stock android doesn’t do this afaik.



I have tried a number of times to connect a phone with broken/dead screen. Touch and audio works.

I have probably managed to enter pin and login but clicking 'Allow usb debugging' checkbox when I run scrcpy is apparently impossible or may be I am missing from some other critical step.

Has someone done anything like that using this tool? It seems like a perfect use case.


The first thing I do whenever I get a new phone (or OS update on an old phone) is enable USB debugging, plug it into my computer, and then click trust this device. It's insurance for the time when the phone screen inevitably dies, because then I can plug it back in and immediately drive it using scrcpy. It's saved me twice so far.


With newer android versions, you might want to check the "disable adb authorization timeout" option too. Otherwise, phone will "forget" your computer's adb key after a week.


Not using this tool, but actually to use this tool. My nexus device had a cracked screen like yours and I ended up running an android emulator to find where to blindly click to finally allow adb


This is a very clever advice. Thanks you. Have to try this out.


You can use mouse with usb otg.


still have to hit an invisible button


Once the authorization popup is on the screen, press Tab, Enter, Tab, Tab, Enter (of course, it's more difficult if USB debugging is not enabled at all).


Thank you. I haven't tried this either. This sounds very doable. Can try this first in emulator.


It's worth learning how to use TalkBack anyway because of the insight it gives you into how accessibility tooling works, and also it's perfect for this use-case.


Can I turn the talk back on blindly? This phone is a pixel 2. Again, this does sound like a very good advice which I can try on emulator first. Thanks.


I'm not sure, but I feel like if a feature for blind people couldn't be turned on blindly, that would be problematic.


Most phones seem to have the default accessibility shortcut set to enable TalkBack -- I've needed to turn it off (for someone with dyspraxia) more than I've needed to turn it on.

Try holding down the two volume buttons down together for a few seconds, it might well activate.


if you have access to your phones files (or the phone backs up photos automatically ) you could try to use screenshots to guide you, or screenshare


Can you explain a bit more please. I do have some random screenshots backed up in Google photos. How does that help?


You take screenshots to navigate your dead screen phone


Whoa this is awesome, I have a “throw away” tablet that loads all my bloatware apps that’s unfortunately necessary for a lot of home automation and messaging stuff. I just install the app and either use a home assistant or matrix plugin. I can now store my tablet in the server room instead and access it remotely!


Big fan of this tool, I use it any time I'm doing presentations or writing a document that requires a recording of my Android's screen.


I'm sure there are many more practical uses, but it's great for automating mobile games.


How does that work - what do you do in the games from your computer for example? Just curious.


Not the original commenter but I would use AutoIt or some other automation software on the computer to click around the game window.


I started using Autopy [0] for writing scripts to automate games on Windows, and then discovered that scrcpy lets me do the same for Android. I've used it for solving picross puzzles and right now I'm working on a solver for the Zachtronics solitaire games.

[0] https://pypi.org/project/autopy/


This also solves remote-support problems for me! Afaik there is no VNC Server / TeamViewer / AnyDesk / etc (server!) for Android, but telling someone to plug their phone into some computer I can control is easy enough :-)


I'm fairly sure there's a VNC server for rooted Android phones, am I mistaken?

Looks like this one will work without root: https://play.google.com/store/apps/details?id=net.christianb...


Cool, thank you!


This is a brilliant idea. I will set it up on my Mother's PC.


Very practical for phones without display port alt mode (notably pixels). Works with rpi.


Is there a reverse scrcpy where I see my computer screen on Android? No need for control, just mirroring screen is enough.


VNC server/client?


Checkout rustdesk, open source vnc with Android client


Chrome Remote Desktop works


Deskreen


weylus?


I used to use this with my Xiaomi phone connected over TCP/IP, but after a while the phone automatically disables wireless debugging so I have to enable it again on the phone directly, which is quite annoying


A tool called "Vysor" does that very well. Need to compare.


I bought Vysor when it was the only option but since moved to Scrcpy because it is simpler to use and had better stability. I remember that Vysor had more features but also had some issues with activating the license on some computers.

EDIT: I forgot to say both did the same thing: mirror the device on the PC.


Used to use Vysor, switched to scrcpy. First, this is free, so that's a big up in its win column. I had trouble with stability in Visor that I never had with scrcpy. Plus, it's open source. There's no comparison to me.


I've used this to play mobile games more comfortably at a computer. Combining this with a pen-tablet is a great experience for games that don't need multi-touxh, and you can sit up straight rather than hunched over a phone.

There were some minor compression artifacts at times but the quality was quite good and the latency was great.


To minimize artifacts, you can increase the bitrate (`scrcpy -b12M`) or use h265 (`scrcpy --video-codec=h265 -b12M`). Depending on your device, the latency with h265 may be higher though (but it might also be lower).


Works well for streaming video from a Quest 2 to a computer.


It has built-in Chromecast functionality too.

In case you know, is there a quality difference? I generally find the Chromecast to be very low fps, is this better?


You can also use this tool to take a screenshot of an app that normally does not allow you to.

Useful if the app has QR Codes that you want to have on hand even if there is no internet connection (like Tesco Clubcard)


Lots of apps will still show a black screen via scrcpy:

* The lock screen of the device

* AndOTP

* Bromite Incognito mode.

I think its called a "security screen" which prevents this, or something like that.


Which you can remove by modifying APK file. I did it for RSA token and MS Authenticator and use them via scrcpy.


Interesting, can you clarify what configuration in the manifest this would be? Or is it not a standardized pattern and more akin to reverse-engineering on a per app basis?



I recently tried this with my old Huawei phone which had a broken screen but also a bunch of photos I would've wanted to save locally. It wouldn't even show up on `adb devices` let alone the programs that relied on adb IIUC. I even tried tapping the sequence for my code on the broken screen, as well as trying to turn on voice control to manually unlock the phone, but that didn't work either. I would be happy to give it another try though.


This is one of those tools that you really want to know about just in case of disaster. Very nice indeed! I unfamiliar with mobile apps, that been said now dumb question: are there nice tools out there that you would recommend to do full backups from a mobile phone to alinux box with the command line? I was thinking about rsync but I don't know if possible, or any limitations at all.


Are there any tools along this line, but act more like an external monitor does when plugged into your laptop (in external-monitor-only mode)? I.e. can run at a different resolution/size, rather than just mirroring the phone screen? Something like what Android Auto does when you plug into a head unit, but for 'normal' android.


I do that with two tablets and a laptop. On the notebook I run some vnc server with an X built-in, then some x or vnc tool that links the different X instances running as if they are other monitors, so you only have to move your mouse to some lateral to get focus on the other X. Then on the tablets just use some generic VNC client.

There are multiple options for ever one of the three programs os this setup, but it takes some work to make all run well together. I can check the exact binaries that I'm using or send the scripts, if there's someone interested.

Edit: to make it work well enough with wifi, I had to make some tricks to deal with the tablet's wifi powersave behavior. On usb it works perfectly though.


Samsung Dex does this but it only works on some devices.


Very useful little utility. I've used it to install SmartTube on my Chromecast with Google TV and previously to tinker with a Beelink box running Android.


For the use cases mentioned in the comments here, I don't think you really need a third party tool like this.

Connect your phone to a USB-C display and viola! Screen is mirrored and network, mouse and keyboard connected to the display are now connected to the phone.

There is also the Microsoft phone app for win10/11, and Samsung Dex.


That is not the same though. I use this as a daily driver and I don't need to dedicate a display or keyboard for it, just use the ones I use for everything else and have the phone just as a normal window on my desktop.

Also lots of phones are unable to output video at all. Such as all Google pixel/nexus devices ever made (unless I missed one).


That does depend on the hardware though -- I don't think any of the phones in my household support USB C DP or HDMI alt modes, and none of the displays are DisplayLink, so while they might manage to transfer power and possibly even connect peripherals there's no common ground for transferring video.


Pretty sure the market share of usb-c Displays is still very low. Also, most people (source needed) use laptops nowadays.


I believe people using laptops at home are the ones with USB-C monitors :)


Most USB-C to anything/everything dongles used by MacBook users have an HDMI output.


I used this to recover data from a phone with a shattered screen and, later, turn it into a full-fledged remote server.

It is undeniably one of the most beautifully designed tools I've ever used. Major props to the developers.


I love this project but it also makes me feel uneasy since no indicator is shown on the device when connected. If someone forgets their phone unlocked, connecting it to your pc and using ADB over WiFi can give you full control and the victim will never know.


Super useful for my broken Pixel 6 Pro which has a broken screen (and replacement parts are still out of stock).

It does also support touch gestures, which makes it basically a software replacement for my screen since I can use my Thinkpad to touch-control the device over adb.

Kudos to Genymobile!


Just chiming in to say I've been using this for what feels like years and it's never failed me. Controlling a phone on a second monitor just because it's convenient, sharing a phone during meetings to showcase stuff, automating a couple apps, you can do it all!


Thank you! Now I can finally play back the podcasts while hearing them on the PC.


This is incredible software with a small caveat: some apps can't be mirrored -- the ones which show blank on the task switcher view. This is more of an OS limitation than scrcpy's fault.


This is most likely just because the app has the secure display flag set, not any OS limitation. It's a feature of android


I know almost nothing about Android app development and especially disassembly (if that's even the correct term): Is it possible to modify an apk to eliminate this flag anywhere it's set?

I assume in the case of apps trying to protect copyrighted content, the answer is likely "yes but the app might check its own signature and exit if it's not valid, which it won't be at that point, so you'd also need to rip that out, which makes the job way harder."


there is am Xposed module that does just this: https://github.com/VarunS2002/Xposed-Disable-FLAG_SECURE


I always pronounce this project as "soccer copy".


I wonder if I can use this while debugging an android app. It would be nice to have a real device on my desktop screens while coding.


Android Studio offers this out of the box since the beginning of this year, I believe


Can you control various android phones from one PC with it? Can't find it in th documentation.


Comes in handy for me on my Macbook.


A life savior program for literally broken devices. I wish I knew earlier!


Any explanation on how does it work? Is it via Android’s virtual display feature?


Incredibly useful for live demos in meetings when working on mobile apps/web.


Very cool, is there something like this for Apple iOS phones?


Yes, it is built into iOS - swipe down from the top right corner and chose mirror screen, this will mirror your screen on a compatible device (I only tested with a MacBook).


As other comment mentions below, this does not allow controlling the device.


You can use QuickTime on MacOS to see your iPhone as a video. Not sure other platforms.


The difference is that you can't control the phone from QuickTime, you can only view it. That is a pity because it is easier to control the phone with a mouse when developing apps (less tiring).


hmm

https://i.imgur.com/JgcKvUa.png

Cant find ADB device...



Como funciona


can we stop naming things worse than strptime and strftime


You should not look in to their other project then, gnitehtet[1]. It's a reverse tethering app named "tethering" in reverse. These two apps have saved my butt more times than I can count, so they can all it whatever they want for all I care.

1. https://github.com/Genymobile/gnirehtet




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: