Έλεγχος του κινητού μέσα από το Linux

Θέλεις να απαντήσεις σε αυτό το chat στο κινητό, αφήνεις το πληκτρολόγιο και το ποντίκι, πιάνεις το κινητό, ανοίγεις το κινητό, γράφεις στο κινητό και εύχεσαι να είχε ένα κανονικό πληκτρολόγιο, αφήνεις το κινητό, επιστρέφεις στο πληκτρολόγιο και στο ποντίκι. Τι καλά που θα ήταν να μπορούσε να το κάνεις από τον υπολογιστή.

Υπάρχουν εμπορικές εφαρμογές που μπορείς να το κάνεις αυτό. Αλλά τι θα έλεγες να το κάνεις με ελεύθερο λογισμικό, και χωρίς να εγκαταστήσεις τίποτα στο κινητό σου; Και χωρίς να εισαι καν root. Τρέλλα; :crazy_face:

Το scrcpy (SCReeen Copy) κάνει ακριβώς αυτό. Το χρησιμοποιώ κυρίως για να κάνω chromecast απο το κινητό, έχωντας έτσι μια συσκευή λίγοτερη συνδεμένη σε υπηρεσίες streamming.

Ρυθμίσεις στο κινητό τηλέφωνο

Θα πρέπει να έχουμε εγκατεστημένο στον υπολογιστή το Android Debug Bridge adb

apt install adb

Συνδέουμε το κινητό στον υπολογιστή με ενα καλώδιο USB. Στην συνέχεια θα πρέπει να ενεργοποιήσουμε το Developer Option και να βρούμε προαιρετικά την διεύθυνση IP τοι κινητού στο τοπιλό δίκτυο. Στις εικόνες δείχμω πως το έκανα στο δικό μου. Αν σας δυσκολεύει ψάξτε στο google : ‘enable developer mode + model’

|

| |

Η ενεργοποίηση του developer mode είναι μια πονηρή διαδικασία. Θα πρέπει να κάνουμε tap πάνω στον αριθμό έκδοσης του Android (πρέπει να έχουμε έκδοση 5 η μεγαλύτερη, ώρα για έλεγχο) αρκετές φορές, μέχρι να δούμε ένα μήνυμα πως ενεργοποιήθηκε. Μετά που θα ενεργοποιηθεί θα δούμε στις ρυθμίσεις το Developer Options που πριν δεν υπήρχε. Ενεργοποιούμε τις δυο ρυθμίσεις της εικόνας.

Η δεύτερη επιλογή `USB debugging (Security Settings)’ είναι για να μπορείς να κάνεις απομακρυσμένο έλεγχο και όχι μόνο να βλέπεις την οθόνη. Ενεργοποιήστε την, μόνο αν δεν λειτουργεί ο απομακρυσμένος έλεγχος. Θα ρωτήσει αρκετές φορές αν θέλουμε να ενεργοποιηθεί.

Και αυτό ήταν δεν θα χρειαστεί να εγκαταστήσουμε τίποτα στο κινητό :-)

Εγκατάσταση του scrcpy

Το scrcpy είναι ένα καινούργιο πρόγραμμα και δεν θα το βρούμε στα αποθετήρια. Υπάρχει στο AUR καθώς και στο Gentoo. Για τους υπολοίπους η λύση είναι η χειροκίνητη εγκατάσταση. Υπάρχει και σε snap, θα πω για λόγους πληρότητας, αλλά δεν βρίσκω κανένα λόγο να το εγκαταστήσω από εκεί. Εναλλακτικά υπάρχει και σε docker GitHub - pierlon/scrcpy-docker: Easily run scrcpy with Docker

Προεργασία
Απαιτούμενα πακέτα και εξαρτήσεις

# Debian based
sudo apt install build-essential git
sudo apt install adb ffmpeg libsdl2-2.0.0  meson ninja-build libavcodec-dev 
sudo apt install libavformat-dev libavutil-dev libsdl2-dev

 # Fedora
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

sudo dnf install android-tools ffmpeg SDL2-devel ffms2-devel meson gcc make

Κατέβασμα και χτίσιμο
Το λογισμικό έχει δυο κομμάτια. Το gui και ένα server γραμμένο σε Java. Τον δεύτερο θα τον κατεβάσουμε έτοιμο. Αν θέλεις να τον χτίσεις δες τις οδηγίες εδώ: https://github.com/Genymobile/scrcpy/blob/master/BUILD.md

git clone https://github.com/Genymobile/scrcpy
wget https://github.com/Genymobile/scrcpy/releases/download/v1.9/scrcpy-server-v1.9.jar
cd scrcpy
meson x --buildtype release --strip -Db_lto=true \
               -Dprebuilt_server=../scrcpy-server-v1.9.jar
cd x
ninja
cd ..
./run x 

Αν όλα πήγαν καλά προχωράμε σε εγκατάσταση.

cd x
sudo ninja install

Χρήση
Απλά τρέχουμε την εντολή scrcpy και θα δούμε την οθόνη του κινητού. Την πρώτη φορά που θα συνδεθείς με το κινητό, αυτό θα πρέπει να είναι ξεκλείδωτο. Θα εμφανιστεί ένα μήνυμα στο κινητό που θα ζητάει να γίνει έγκριση σύνδεσης. Αν απορριφθεί η σύνδεση ξαναπροσπαθήστε.

Την έγκριση την κάνεις μόνο την πρώτη φορά που θα συνδεθείς. Η διαδικασία αυτή θα πρέπει να γίνει για κάθε υπολογιστή που θέλει να βλέπει το κινητό τηλέφωνο. Ανάκληση (revoce) των δικαιωμάτων σύνδεσης μπορεί να γίνει από το κινητό.

Τα παρακάτω ορίσματα της συσκευής είναι χρήσιμα.

Ορίσμα Παράδειγμα Σχόλια
--bitrate -b2M ταχύτητα σύνδεσης. Εξ ορισμού 8Μ
--maxsize -m 800 Μέγιστη διάσταση στην οθόνη σε pixel
--serial -s ... Αν έχεις πάνω από δύο τηλέφωνα
--show-touches -t Show touches για παρουσιάσεις
--turn-screen-off -S Κλείσε την οθόνη του κινητού

Στην πράξη είναι χρήσιμο ένα μικρό script ή ένα alias

alias redmi4A=`scrcpy -b2M -m800 -S -t -s secretidlalala`

Δώστε scrcpy --help ή δείτε εδώ GitHub - Genymobile/scrcpy: Display and control your Android device για μια πλήρη λίστα.

Ασύρματη σύνδεση
Με την εντολή adb devices βλέπουμε τις συνδεμένες συσκευές. Αφού βρούμε την διεύθυνση IP του κινητού στο τοπικό δίκτυο (χρήσιμο είναι να βάλουμε τον ρούτερ να κλειδώσει αυτή την διεύθυνση) δίνομε τις εντολές

adb tcpip 5555
adb connect 192.168.1.101:5555

βάζοντας την σωστή IP. Αποσυνδέουμε το κινητό από το καλώδιο USB.

Shortcuts

Ενέργεια Shortcut
switch fullscreen mode Ctrl+f
resize window to 1:1 (pixel-perfect) Ctrl+g
resize window to remove black borders Ctrl+x | Double-click¹
click on HOME Ctrl+h | Middle-click
click on BACK Ctrl+b | Right-click²
click on APP_SWITCH Ctrl+s
click on MENU Ctrl+m
click on VOLUME_UP Ctrl+ (up) (Cmd+ on MacOS)
click on VOLUME_DOWN Ctrl+ (down) (Cmd+ on MacOS)
click on POWER Ctrl+p
power on Right-click²
turn device screen off (keep mirroring) Ctrl+o
expand notification panel Ctrl+n
collapse notification panel Ctrl+Shift+n
copy device clipboard to computer Ctrl+c
paste computer clipboard to device Ctrl+v
copy computer clipboard to device Ctrl+Shift+v
¹Double-click on black borders to remove them.
²Right-click turns the screen on if it was off, presses BACK otherwise.

Εγκατάσταση apk
Με drag and drop. Τόσο απλά.

Πρόβλημα με Ελληνικά
Δυστυχώς δεν μπορείς να γράψεις ελληνικά λόγω τεχνικών περιορισμών.

Δείτε επίσης

9 «Μου αρέσει»

Φαίνεται πάρα πολύ ενδιαφέρουσα και καταπληκτική δυνατότητα!
Και δεν χρειάζεται καν να είναι συνδεδεμένο το smartphone στον υπολογιστή μας ;

Αν αφήσουμε έτσι τις ρυθμίσεις, υποθέτω πως ανοίγουμε όμως μια μεγάλη “πόρτα ασφαλείας” στο android smartphone μας, σωστά ; Θα πρέπει τουλάχιστον να κλείνουμε το developer mode μετά την χρήση μας.

Το πρόβλημα που αντιμετωπίζεις το αντιμετωπίζω και εγώ και πολύ άλλοι νομίζω. Και πραγματικά είναι τόσο βαρετό ενώ είσαι στον υπολογιστή να χτυπάει κάτι στο κινητό, να αρχίζει μια συνομιλία και να γράφεις στο μικρό άβολο πληκτρολόγιο του κινητού σου. Πόσες φορές σκεφτόμουν ακριβώς αυτό! Να μπορώ να γράφω από τον υπολογιστή.

Πραγματικά πολύ ωραίο και δε το γνώριζα!
Μια ακόμη ερώτηση, αυτό από ότι καταλαβαίνω αφορά το android και κατ’ επέκταση της συσκευές smartphones/tablets που τρέχουν android. Για iOS υπάρχει κάτι παρόμοιο ;

1 «Μου αρέσει»

Απαιτεί κινητό Android με έκδοση 5 ή μεγαλύτερη. Όσο για την τρύπα ασφάλειας δεν είναι τόσο μεγάλη όση νομίζεις. Για να συνδεθεί κάποιος θα πρέπει να είναι στο τοπικό δίκτυο, όπου θέλει κωδικό και έχεις εσύ τον έλεγχο. Αν τώρα το πρόβλημα είναι μην σε χακάρει ο σύντροφος σου, ώστε να βλέπει τα chats σου, τότε έχεις ένα μεγαλύτερο πρόβλημα να λύσεις :nerd_face:

Πέραν αυτού, από την στιγμή που εμφανίσεις τις επιλογες Developer Options εύκολα μπορείς να κλείσεις τις δυνατότητες ή να αφαιρέσεις κάποιο authorization.

Δεν είμαι ειδικός στο android, ούτε είμαι σε θέση να συμβουλέψω για προσωπικές πολιτικές ασφάλειας, αλλά εγώ τουλάχιστον το έχω ανοικτό, αλλά επίσης έχω ένα δεύτερο ssid ανοικτό και ελεύθερο για τους φίλους και επισκέπτες.

Update
Την πρώτη φορά που θα συνδεθείς με το κινητό, αυτό θα πρέπει να είναι ξεκλείδωτο. Θα εμφανιστεί ένα μήνυμα στο κινητό που θα ζητάει να γίνει έγκριση σύνδεσης. Αν απορριφθεί η σύνδεση ξαναπροσπαθήστε. Η διαδικασία αυτή θα πρέπει να γίνει για κάθε υπολογιστή που θέλει να βλέπει το κινητό τηλέφωνο.

2 «Μου αρέσει»

Πολύ καλό το scrcpy… Αν και είχα μερικά θεματάκια με κάποια dependencies (ας είναι καλά το aptitude που τα έλυσε…) δουλεύει σχεδόν άψογα. Και η σύνδεση είναι 100% ασύρματη (με το ADB συνδεδεμένο μέσα από το δίκτυο)

Ορίστε και δυο screenshots για να αποδείξω ότι όντως δούλεψε…


@Asfodelus Μου αρέσει η πλήρης απάντηση σου. Όντως, όπως δείχνεις έχει πολλές επιλογές! Αλλά ακόμη και πολύ απλά φεύγοντας από το σπίτι το κλείνεις.

Η άποψη περί πολιτικής ασφαλείας και προστασίας είναι απλώς για να αναφέρω αυτή την πιθανή παράπλευρη απώλεια ώστε να είναι υποψιασμένος ο χρήστης και σε καμία περίπτωση να γειώσω αυτό το τρομερό κολπάκι που πραγματικά είναι πολύ χρήσιμο! Είναι καταπληκτικό το γεγονός μάλιστα, πως δεν χρειάζεται καν να έχεις συνδεδεμένο το κινητό ενσύρματα με τον υπολογιστή! Αρκεί να είναι συνδεδεμένο στο WiFi!
( Δηλαδή, σου ήρθε μια ειδοποίηση, ανοίγεις τερματικό, συνδέεσε στο κινητό και το κανείς ότι θέλεις )


Επίσης τώρα που το σκέφτομαι για τα script kids αυτό θα μοιάζει και σαν “hack tip” σωστά ; :stuck_out_tongue_closed_eyes:

Υπόψιν πως για KDE υπάρχει το KDE Connect με την αντίστοιχη εφαρμογή στο Google Play και στο F-Droid και το GSConnect για Gnome με το πρόσθετο για Firefox και το πρόσθετο για Google Chrome.

KDE Connect @ GitLab | Gnome Shell Connect @ Github

Για το KDE Connect έχει γράψει ο @anon74452261 ένα καταπληκτικό οδηγό

Τα προγράμματα αυτά είναι χρησιμότατα και πρέπει να τα δεις. Με το KDE Connect Μπορείς να κλείσεις τον υπολογιστή απο το κρεβάτι για παράδειγμα.

Αντίστοιχο πρόγραμμα με το scrcpy σε ελεύθερο λογισμικό (και χωρίς να εγκαταστήσεις τίποτα δεν υπάρχει ούτε σε κλειστό) δεν υπάρχει από όσο γνωρίζω.

1 «Μου αρέσει»

Update:
Την πρώτη φορά που θα συνδεθείς με το κινητό, αυτό θα πρέπει να είναι ξεκλείδωτο. Θα εμφανιστεί ένα μήνυμα στο κινητό που θα ζητάει να γίνει έγκριση σύνδεσης. Αν απορριφθεί η σύνδεση ξαναπροσπαθήστε. Η διαδικασία αυτή θα πρέπει να γίνει για κάθε υπολογιστή που θέλει να βλέπει το κινητό τηλέφωνο.

Αυτή η λεπτομέρεια που απέτυχα να τονίσω, μειώνει αισθητά τις αιτιάσεις για την ασφάλεια.

1 «Μου αρέσει»

Στο website αυτό https://apappinformation.wixsite.com/android2monitor έχω έτοιμο script που μπορείτε να εγκαταστήσετε το scrcpy εύκολα ειδικά για νέους χρήστες σε linux διανομές καθώς και windows.
Σημείωση: Ο κώδικας που έχω γράψει είναι ανοιχτός τόσο για linux όσο και για windows.

3 «Μου αρέσει»

Δείτε επίσης

Η αλήθεια είναι πως ο βαθμός επικινδυνότητας της συγκεκριμένης ρύθμισης, ποικίλλει αναλόγως της χρήσης που κάνει ο καθένας για το τηλέφωνο του. Με την αποσφαλμάτωση USB ενεργοποιημένη, είναι γενικά πιο εύκολη η πρόσβαση στο κινητό και τα αρχεία του. Ωστόσο για αυτό χρειάζεται φυσική πρόσβαση, οπότε δράστης είναι είτε του οικείου περιβάλλοντος είτε το κινητό έχει κλαπεί. Τώρα αυτά που μπορεί να γίνουν είναι πρόσβαση στις επαφές του τηλεφώνου, ξεκλείδωμα της συσκευής πιο εύκολα (ακόμα και με μοτίβα/ PIN κλπ ένα Android ξεκλειδώνει σε ένα 10λεπτο από κάποιον που ξέρει) και άλλα διάφορα. Αλλά δεν μπορεί να γίνει απομακρυσμένα κάτι, χωρίς πρώτα να υπάρξει φυσική πρόσβαση (τουλάχιστον μέχρι και την τελευταία φορά που έψαχνα περί του θέματος).

Έβαλα το scrcpy , πολύ καλό! Άντε να τα δούμε και σε κανένα repository, και το GUI! Πάντως χρησιμοποιώ κυρίως το KDEConnect.

Πολύ καλό και δουλεύει άψογα. Υπάρχει και σε snap. https://github.com/sisco311/scrcpy-snap

Βγήκε η νέα έκδοση 1.11. Στις βασικές αλλαγές η υποστήριξη touchscreen input και multitouch gestures. Κάτι χρησιμότατο αν το ελέγχεις από υπολογιστή με οθόνη αφής. Επίσης υπαρχει καλύτερος έλεγχος του παράθυρου της εφαρμογής με νέες παραμέτρους της γραμμής εντόλών καθώς και μια παράμετρος --max-fps

Η παράμετρος --prefer-text πιθανά να λύνει το πρόβλημα με την είσοδο των ελληνικών, αλλά δεν το έχω δοκιμάσει ακόμα.

Σύμφωνα με το linuxuprising το scrcpy είναι πλέον διαθέσιμο σε Debian Testing / Sid και Ubuntu 20.04 Focal Fossa

scrcpy Now Available In Debian Testing / Sid And Ubuntu 20.04 Focal Fossa

3 «Μου αρέσει»

Στην τελευταία έκδοση αυτό το πρόβλημα μάλλον έχει λυθεί (δεν το δοκίμασα ακόμα).

Όλο και καλύτερο

3 «Μου αρέσει»