I try out a lot of stuff on the GameShell, so I flash the image over and over again.
Setting up the Wi-Fi every time on the GameShell is a pain.
So, I decided to ELIMINATE WI-FI ALTOGETHER!
This tutorial is about fully utilizing your GNU/Linux PC, i.e.:
- USB: List your GameShell as a USB device on your GNU/Linux PC!
- SSH: Connect to your GameShell from your GNU/Linux PC!
- Internet: Provide internet access to your GameShell from your GNU/Linux PC!
- Wired: Never need Wi-Fi ever!
Here is what I did step by step:
USB card:
- [Optional] Flash a clean image on your usb_device (e.g. /dev/sdX).
sudo dd bs=4M if=clockworkos_v0.1.img of=${usb_device} status=progress oflag=sync
-
Replace the file uImage on the
boot
partition. -
Find out the ip_of_your_router connected to the internet.
-
On your
CLOCKWORKPI
partition, append to/etc/network/interfaces
(using sudo):
allow-hotplug usb0
auto usb0
iface usb0 inet static
address 10.0.0.2
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers ${ip_of_your_router}
This will add the GameShell to a new 10.x.x.x network with a static IP once it is connected!
- On your
CLOCKWORKPI
partition, replace line 330 of/home/cpi/apps/launcher/Menu/GameShell/10_Settings/Update/__init__.py
:
if is_wifi_connected_now():
by:
if True:
This will enable you to use ‘Update’ from the GameShell menu using USB later on!
GNU/Linux PC:
-
Now turn on your GameShell (with USB card in it) and hook it to your PC.
-
Check if the GameShell shows up as a USB device:
$ lsusb
Bus 001 Device 007: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
- Find the internet_interface and gameshell_interface (e.g.
eth0
andenps3s0
):
$ ip address
1: lo: ...
2: eth0: ...
3: enp03s0: ...
- Create new network rules using your internet_interface and gameshell_interface:
sudo iptables -t nat -A POSTROUTING -o ${internet_interface} -j MASQUERADE
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i ${gameshell_interface} -o ${internet_interface} -j ACCEPT
- Assign a static IP address to your gameshell_interface. The ip
10.0.0.1
should matchgateway
of step 4!
sudo ip link set up dev ${gameshell_interface}
sudo ip addr add 10.0.0.1/24 dev ${gameshell_interface}
- Enable internet forwarding:
sudo sysctl net.ipv4.ip_forward=1
- Login! The ip
10.0.0.2
should matchaddress
of step 4!
ssh cpi@10.0.0.2
- Test if your GameShell has internet:
ping clockworkpi.com
Without ever turning Wi-Fi on you should have full access to your GameShell including internet!
Notes:
- Tested on Ubuntu and Arch.
- step 9 and 11 will reset after reboot.
- step 10 will reset after unplugging.
- Make sure
/etc/resolv.conf
on the GS has ip_of_your_router for DNS.
Search online how to make those steps permanent (or make a script).
Good luck!