[WIP] Streamαρε παιχνίδια από το PC στην τηλεόραση

Θα χρειαστούμε:

  • Raspberry Pi 3B με όποια παρελκόμενα (sd-card, ethernet καλώδιο, HDMI καλώδιο)
  • To βασίκο μας gaming PC με καινούρια NVIDIA GeForce κάρτα γραφικών (ναι, θέλει συγκεκριμένα nvidia).
  • Μία τηλεόραση (κατα προτίμηση στο σαλόνι :stuck_out_tongue:) στην οποία θα στριμάρουμε τα παιχνίδια
  • Ενα ασύρματο controller (ή πληκτρολόγιο/ποντίκι) για να παίζετε τα παιχνίδια στην τηλεόραση.

Γράφουμε την sd-card

Κατεβάζουμε το εργαλείο Raspberry Pi imager από εδώ.
1
Είναι πολύ εύκολη η χρήση του. Επιλέγεις:

  1. την sd-card σου,
  2. το λειτουργικό που θες να της βάλεις μέσα (πχ Raspberry Pi OS (32-bit)

Τέλος πατάμε το κουμπάκι WRITE. Ετσι, θα ξεκινήσει να γράφει το image στην sd-card. Αφού τελειώσει, θα ξεκινήσει αυτόματα ένα verification check για να σιγουρευτεί ότι όλα πήγαν καλά με την εγγραφή.
2

Ρυθμίση SSH

Οταν δείς το παραπάνω μύνημα σημαίνει ότι όλα πήγαν καλά. Αποσύνδεσε την sd-card κάρτα από το PC. Τώρα, ξανα σύνδεσε την πάλι στο PC. Ωραία, θα δεις ότι έκανε το PC αυτόματα mount ενα partition με το όνομα boot. Πάνε εκεί και φτιάξε ένα απλό αρχείο και όνομασέ το ssh.


Μην γράψεις κάτι μέσα στο αρχείο, απλά φτιάξε το και άστο εκεί. Στην ουσία, αυτό είναι ένα κόλπο για να ενεργοποιθεί ο sshd κατά το boot. Οπότε μόλις ανοίξει το RPi θα μπορούμε να κάνουμε SSH και να συνδεθούμε σε αυτό.

Ρύθμιση δικτύου

Για να συνδεθούμε σε κάτι, πρέπει αυτό το “κάτι” να βρίσκεται στο δίκτυο.

1ος τρόπος: με wifi

Αν θέλετε να συνδεθείτε με wifi τότε πρέπει να συνδέσουμε το RPi στο Wifi του σπιτιού μας. Για να το κάνουμε αυτό φτιάχνουμε ένα ακόμα αρχείο, με όνομα wpa_supplicant.conf και γράφουμε μέσα το εξής:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="ΒΑΛΕ ΤΟ ΟΝΟΜΑ ΤΟΥ WIFI"
    psk="ΒΑΛΕ ΤΟΝ ΚΩΔΙΚΟ ΤΟΥ WIFI"
}
  • στο ssid βάζεις το ssid του wifi δικτύου σου
  • στο psk βάζεις το password που δίνεις στους φίλους σου όταν έρχονται σπίτι σου και σου ζητάνε τον κωδικό του wifi.

Αν υπάρχει μεγάλη απόσταση μεταξύ του router και του Raspberry Pi 3B model μου, το link θα είναι αρκετά αργό:

Οπως βλέπετε είναι μόλις 28 Mbit/s. Δυσκολα να στριμάρουμε κάτι της προκοπής με αυτό το αργό wifi link. Ετσι λοιπόν καταφεύγουμε στην 2η λύση:

2ος τρόπος: με wifi repeater (προτιμότερο) και ethernet

Οπως είπα και πριν αν και το RPi έχει δικό του WIFI module, προτίμησα να μην το ζορίσω και να χρησιμοποιήσω το repeater που έχω ήδη εγκατεστημένο, καθώς είναι και πιο γρήγορο. Οπως βλεπετε το raspberrypi είναι συνδεμένο με τον repeater. Δυστυχως το wifi link είναι μόλις 117 Mbit/s μόνο, οπότε αν δω οτι κολλάει το gaming, ισως θα πρέπει να αγοράσω ένα 5 GHz wifi repeater σαν 3η λύση και να τελειώσω με αυτό …

Οποτε βγαζουμε την sd-card από το PC και την βάζουμε στο raspberry pi. Πάμε τώρα εκεί που βρίσκεται η τηλεόραση. Συνδέουμε το RPi με HDMI και ethernet, και επίσης βάζουμε και το ασύρματο usb για να δουλεύει το χειριστήριο για τα παιχνίδια. Τέλος βάζουμε και το ρεύμα, και είμαστε έτοιμοι.

Συνδεόμαστε στο Raspberry

Τέλος πάντων, με το που το βάλουμε στο ρεύμα, ξεκινάει το boot. Μολις ανοίξει θα σας πετάξει το μύνημα ότι το SSH Server τρέχει ήδη.

Ανοίγουμε terminal από το Gaming PC και συνδεόμαστε στην IP του. Στο δίκτυο μου, πήρε την IP (192.168.178.74), στο δικό σας θα είναι διαφορετική.

Δίνουμε: ssh pi@192.168.178.74 και ο κωδικός είναι raspberry

Βάλε κωδικό για τον χρήστη pi

Στην συνέχεια: sudo raspi-config και επιλέγουμε την πρωτη επιλογη για να αλλαξουμε το password του pi user. Εναλλακτικά μπορούεμ να δώσουμε απευθείας passwd χωρίς να ανοίξει το ncurses περιβάλλον. Ο,τι σας βολεύει.

Εκεί βάζουμε τον νέο μας κωδικό και τέλος πατάμε Finish.

Βγαίνουμε από την σύνδεση πατώντας exit και συνδεόμαστε ξανά: ssh pi@192.168.178.74 μόν που τώρα θα βάλουμε το δικό μας καινούριο password που μόλις θέσαμε.

Κάνε ένα update

Δεν βλάπτει: sudo apt-get upgrade.
Στο καπάκι κάνουμε και μία επανεκκίνηση καλού-κακού: sudo systemctl reboot

Εγκατάσταση moonlight

echo "deb https://dl.bintray.com/moonlight-stream/moonlight-raspbian buster main" | sudo tee /etc/apt/sources.list.d/moonlight-raspbian.list 
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61
sudo apt update
sudo apt install moonlight-qt

Εγκατάσταση VNC Server

Αν και δεν απαιτείται, εμένα με βολεύει για να μπορώ να συνδέομαι με γραφικό περιβάλλον από το κάποιο άλλο PC, χωρίς να μεταφέρω πληκτρολόγια και ιστορίες στο σαλόνι (εκεί που βρίσκεται το δικό μου raspberry). Ασε δε που καμια φορά μπορεί να βλέπει κανείς καμία ταινία και να πρέπει να περιμένω. Οπότε δε βλάπτει να σηκώσουμε και έναν VNC Server, έτσι για να υπάρχει.

`sudo raspi-config`

Επιλέγουμε Interfacing Options > VNC > Yes.

11

Για να συνδεθούμε στο RaspberryPi μέσω VNC, θα χρειαστούμε έναν client. Οπότε πάμε στο Gaming, και το βάζουμε: https://www.realvnc.com/en/connect/download/viewer/

13

και voila:

Τώρα μπορώ και βλέπω το GUI του RaspberryPi από το Gaming PC μου.

NVIDIA

Στο Gaming PC ανοίγουμε το GeForce Experience και πατάμε στο εικονίδιο με το γρανάζι που είναι τα settings > shield > ανοίγουμε το διακοπτάκι με το Gamestream ωστε να πρασινίσει.

Moonlight pairing

Πάμε στο VNC, συνδεόμαστε το RPi και δίνουμε moonlight-qt. Θα ανοίξει ένα παράθυρο και θα αρχίσει να ψάχνει για PC που έχουν NVIDIA GameStream. Λογικά θα βρει το δικό μας, και όντως το βρήκε:

Κανω κλικ στο εικόνίδιο του PC με την κλειδαριά προκειμένου να το κάνω Pairing. Θα μου βγάλει έναν 4ψηφιο κωδικό, τον οποίο θα πρέπει να τον βάλω στο Gaming PC. Οντως λοιπον με το που έκανα διπλό κλικ, μου έβγαλε τον κωδικό, ενώ ταυτόχρονα στο gaming PC εμφανίστηκε ένα pop-up window από την nvidia και μου ζητούσε τον κωδικό αυτόν.

Πλέον η αλυσίδα πρέπει να έχει φύγει, το οποίο σημαίνει ότι έχει γίνει το pairing.

Αν θελέτε να το κάνετε αυτό από command line: moonlight-qt pair $GAMINGPC_IP

Κάνοντας κλικ ξανά μου δείχνει τα παιχνίδια που έχω στο nvidia geforce experience. Αυτά μπορώ να τα στριμάρω:

Για να μην ανοίγετε το VNC κάθε φορά, μπορείτε να γράψετε ένα απλό script:

#!/bin/bash
GAMING_IP="192.168.178.63"
moonlight-qt stream $GAMING_IP --1080 

X-Box controller

Συμφωνα με το https://www.reddit.com/r/RetroPie/comments/aakkop/xbox_one_s_controller_disable_ertm_persist_on/ πρέπει να κάνω:

 sudo echo 'options bluetooth disable_ertm=Y' > /etc/modprobe.d/bluetooth.conf
sudo systemctl reboot

Μετά μολις γινει επανεκκίνηση προσθέτουμε το X-Box controller.Πατάμε Add Device:
20

Ανοίγουμε το X-Box controller και το βάζουμε σε pairing mode:


Μόλις το δούμε να εμφανίζεται (XBox Wireless COntroller) κάνουμε κλικ στο Pair button. Περιμένουμε λίγο και:
19

Ετοιμο και αυτό. Σιγουρευόμαστε ότι το φωτάκι στο XBox Controller δεν αναβοσβήνει πλέον, αλλά είναι αναμένο σταθερά, υποδειλώνοντας ότι έχει συνδεθεί.

Overclocking

Το Raspberry Pi3 (αλλά και το 4) είναι αρκετά αδύναμα … δυστυχώς. Οπότε πρέπει να τα κλοκάρουμε:

sudo vim /boot/config.txt

Και βάλε:

gpu_mem=128
force_turbo=1
h264_freq=333

Συνεχίζεται … προς το παρών λαγκάρει αρκετά, αλλά θέλω να επιβεβαιώσω αν οφείλεται στο δίκτυο ή στο Raspberry Pi

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