The Raspberry Pi Foundation (raspberrypi.org) has released a new Pi, the Raspberry Pi 400. The 400 is encased inside a keyboard.
The Raspberry Pi 400 reminds me of my first computer, a Texas Instruments 99/4a. It was a keyboard you hooked up to your television. The 400 is similar but much more powerful and better in many ways. The 400 is an upgrade from the Raspberry Pi 4 as well. Let's look at the specifications.
Specifications
The specs for the board are as follows:
Compared to the Raspberry Pi 4, the differences are as follows:
The remaining specs are the same other than the keyboard in which it is enclosed.
To buy the Raspberry Pi 400 Kit, there is included in the kit:
Now, let’s see if we can do something special with this new item.
Portable Project
There are times when you want to take your Pi with you. Especially if you have a favorite OS on it that you do not want to format your laptop to replace it, losing all your data. In my case, my kids love the Raspbian OS with game emulators. Now, I can make a portable gaming system that they can take with us to visit family.
NOTE: If you want to check out available Operating Systems (OS), then go to https://www.raspberrypi.org/software/operating-systems/.
No matter the OS, you can use these steps to get your 400 more portable. A few steps are crucial to allow you a more portable environment.
One of the main things is power. If you happen to be near a wall outlet or even in a vehicle that you can access a cigarette lighter, then you can simply plug in the Pi 400. What if you have no access to power, such as a park? Now you will need a portable battery. The Pi 400 requires 3.0 Amps. Most portable power packs only do 1 or 2, maybe 2.4 amps at best. Search for a battery pack with a USB-C connector on it. The USB-C port should have an output of 5v/3a. The output is exactly what is needed to run the Raspberry Pi 400. Make sure you also have a USB-C to USB-C cable that will allow you to connect the power bank directly to the Pi 400.
You will then need to pick your OS and get the image placed onto the SD card. In my case, I will be using Raspbian.
After booting the system, you need to configure the settings that it prompts you at the first startup. Reboot if needed and open a Terminal to perform most of the following installation and configuration changes.
Open the Menu in Raspbian and go to 'Preferences'. Highlight and select the 'Raspberry Pi Configuration' program. Select the 'Interfaces' tab and enable VNC. You may need to reboot again if needed.
In the following steps, we will be changing the WI-Fi adapter to be an Access Point (AP). What this means is that the Wi-Fi on the Pi 400 will be able to be accessed as if it were a router. Once a client connects to the AP, it will issue an IP Address using DHCP. We are not using the Pi 400 as a router, but simply to connect to it with a device to use as a monitor. In this way, you can use your phone, Android tablet or an Apple IPad as the screen and not be required to have a television or PC monitor (when the family is watching sports or a movie). The monitor or television would of course need power as well. Whatever you use as a portable monitor, make sure it is fully charged.
Wi-Fi Access Point (AP)
You need to have your Pi 400 connected to an Ethernet Network and hooked up normally to a monitor or TV to get everything configured.
Perform an update by doing the following at a command prompt (if needed, since the initial Raspbian configuration should have done this already):
sudo apt update
sudo apt upgrade
If any updates were installed it would be best to reboot the system for all of the updates to take effect. Once the OS is loaded, go back to a command prompt.
Use the command ‘ifconfig’ to get information about your network connections.
NOTE: If the ‘wlan0’ does not show in the list, then you need to perform the command ‘sudo rfkill unblock wlan’. Now perform the ‘ifconfig’ command and ‘wlan0’ should now be there. This is not needed on Raspbian, but may be on another OS.
What you need is the IP Address of the 'eth0' adapter. On my system, it is listed as 'inet 192.168.1.36 netmask 255.255.255.0'. We will set up a new network with a different IP Address scheme.
For Raspbian, you need an emulator for the gaming system. I installed MAME and then copied over the BIOS and ROM files. Install MAME with the command:
sudo apt install mame
Managing the BIOS and ROM files are beyond this article. Other Emulators can work as well, but to show how to make this work, I will only work with MAME.
Next, we need to install the software that will let us create the Access Point. Perform the following command:
sudo apt install hostapd
Once it is installed, we need to have the service start automatically with the following:
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
If the Pi 400 is to truly act like a router, then we need to have it manage DNS and DHCP. Mainly, we need the Pi 400 to issue IP Addresses to the device connecting to it. In this case, the device is what is being used as a monitor. Perform the following two commands to install and configure the required software:
sudo apt install dnsmasq
sudo apt install netfilter-persistent iptables-persistent
NOTE: A screen should appear to ask if you want to back up rules. Select ‘Yes’ both times.
One last thing to install (Raspbian already has it, but another OS may not) now that will be configured later:
sudo apt install tightvncserver
The software should all be installed and must now be configured.
If we are going to use DHCP for the connecting client, then the Pi 400 needs to have a Static IP Address. Let’s use ‘192.168.33.1’ for the Pi 400 and ‘192.168.33.5’ to ‘192.168.33.10’ for the connecting devices.
To set the Static IP Address, we can edit the necessary file with the command:
sudo nano /etc/dhcpcd.conf
At the end of the file, add the following lines:
interface wlan0
static ip_address=192.168.33.1/24
nohook wpa_supplicant
Save and exit the ‘nano’ program. Now, we need to configure the DHCP Server for the wireless network when it is used.
To start, we’ll make a copy of the current configuration file and edit the original one. Use the following two commands to perform these actions:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
sudo nano /etc/dnsmasq.conf
Include the following information in the file:
interface=wlan0
dhcp-range=192.168.33.5,192.168.33.10,255.255.255.0,12h
address=/#/192.168.33.1
Save and exit the ‘nano’ program. The DHCP Server will use the IP Address Pool of 192.168.33.5 to 192.168.33.10 and allow a lease of 12 hours.
Next, we will create the configuration for the 'hostapd' service. Use the following command to create the file:
sudo nano /etc/hostapd/hostapd.conf
Use the following lines as a starting point for the basic configuration:
country_code=US
interface=wlan0
ssid=GamingNet
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=PlayNow1
wpa_pairwise=TKIP
rsn_pairwise=CCMP
NOTE: You can change the ‘country_code’ as needed. To use the IEEE 802.11a mode with the code ‘a’, IEEE 802.11b with the code ‘b’ or IEEE 802.11g with the code ‘g’. By changing the code, you may need to change the channel appropriately.
Edit the next file with the command:
sudo nano /etc/network/interfaces
Add the following lines at the end of the file:
auto wlan0
iface wlan0 inet static
address 192.168.33.1
netmask 255.255.255.0
gateway 192.168.33.1
Now, you should be able to disconnect the Ethernet cable and reboot the Pi 400 to enable the Access Point. Do not disconnect your monitor yet.
From another system or Wi-Fi device, you should see the SSID of ‘GamingNet’ show up in the list. If not, go back and check everything again. Any small typo can make a big difference. Do not connect to the 'GamingNet' yet. There are still things to do with the devices.
So, now we can see the RetroPie System as an Access Point. We still need to be able to view the screen on another device.
NOTE: One of the last things you need to do before disconnecting your monitor is to change the resolution. The setting should be set to something below 1024x768. I use 800x600. VNC Server has issues with resolutions over 1024x768, so it is best to make it less than that. Try to match the resolution with your device.
Another issue is that the Raspberry Pi boards usually will not boot if it cannot detect a monitor. You can plug any cable into the video port, but another solution is the following. Edit the file ‘/boot/config.txt’ with the command:
sudo nano /boot/config.txt
Add the following text at the end of the file:
boot.loader.raspberryPi.firmwareConfig = ''
hdmi_force_hotplug=1
'';
Save and close the file before rebooting.
VNC Server
We installed the ‘tightvncserver’ earlier, now we need to set it up. Remember, this section is for systems that do not come preinstalled with VNC Server.
We need a new service file, so execute the command:
sudo nano /etc/systemd/system/vncserver.service
In the new file, you will enter the following:
[Unit]
Description=TightVNC Server
After=network.target
[Service]
Type=forking
User=pi
ExecStart=/usr/bin/vncserver :1
ExecStop=/usr/bin/vncserver -kill :1
[Install]
WantedBy=multi.target
Save and exit the ‘nano’ app. You should now be ready to connect. A reboot may be needed to enable all the services.
Connecting a Screen
From an Android or Apple device, go to Play Store or App Store and search for VNC Viewer. The app is made by RealVNC. Make sure you get the correct app or it may not work. Other apps should work if you have one you already use.
Before you continue, you need to change your Wi-Fi connection from the device you will use as a monitor to the ‘GamingNet’ SSID.
Open the app and you should see a plus (+) in the top right corner. Press it to add a new device to connect to using VNC. You should be prompted for an IP address and a Name. For the IP Address use 192.168.33.1, which is our Pi 400. The Name can be whatever you want to remember the device, such as ‘Pi 400’.
NOTE: If there is a connection issue, add ‘:5901’ to the IP Address for a specific port number.
Next, you will be asked for more configuration information. You can change the Picture Quality, but in most cases, you should use 'Low' so there is less lag. For Interaction, use 'View-Only'. Select 'Done' in the top right of the window.
Click on the new icon you made for the 'Pi 400'. You should now be prompted for Username and Password. Use 'pi' and 'raspberry' for Raspbian. You can select 'Remember Password' so you do not need to re-enter the info every time you connect to the 400. Select 'Go' to open the connection.
The screen may not fit correctly, so you need to move the visible screen around on the physical screen of your device (if it is a touch screen).
Conclusion
I hope you find this article informative. Having a wireless system working off of one battery seems very cool.
Try this yourself and have fun with it.
The Raspberry Pi 400 reminds me of my first computer, a Texas Instruments 99/4a. It was a keyboard you hooked up to your television. The 400 is similar but much more powerful and better in many ways. The 400 is an upgrade from the Raspberry Pi 4 as well. Let's look at the specifications.
Specifications
The specs for the board are as follows:
Processor | Broadcom BCM2711 quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1.8GHz |
RAM | 4 GB LPDDR4-3200 |
Connectivity | Dual-band (2.4GHz and 5.0GHz) IEEE 802.11b/g/n/ac wireless LAN, Bluetooth 5.0, BLE Gigabit Ethernet 2 × USB 3.0 and 1 × USB 2.0 ports |
GPIO | Horizontal 40-pin GPIO header |
Video & sound | VideoCore VI at 500 MHz 2 × micro HDMI ports (supports up to 4Kp60) 3.5 mm analog AV Jack |
Multimedia | H.265 (4Kp60 decode); H.264 (1080p60 decode, 1080p30 encode); OpenGL ES 3.0 graphics |
SD card support | MicroSD card slot for operating system and data storage (up to 512 GB) |
Keyboard | 78 key compact keyboard, US Keyboard Layout |
Power | 5V DC (3 amps) via USB-C connector |
Operating temperature | 0°C to +50°C |
Dimensions | 286 mm × 122 mm × 23 mm (maximum) |
Compared to the Raspberry Pi 4, the differences are as follows:
The remaining specs are the same other than the keyboard in which it is enclosed.
To buy the Raspberry Pi 400 Kit, there is included in the kit:
Now, let’s see if we can do something special with this new item.
Portable Project
There are times when you want to take your Pi with you. Especially if you have a favorite OS on it that you do not want to format your laptop to replace it, losing all your data. In my case, my kids love the Raspbian OS with game emulators. Now, I can make a portable gaming system that they can take with us to visit family.
NOTE: If you want to check out available Operating Systems (OS), then go to https://www.raspberrypi.org/software/operating-systems/.
No matter the OS, you can use these steps to get your 400 more portable. A few steps are crucial to allow you a more portable environment.
One of the main things is power. If you happen to be near a wall outlet or even in a vehicle that you can access a cigarette lighter, then you can simply plug in the Pi 400. What if you have no access to power, such as a park? Now you will need a portable battery. The Pi 400 requires 3.0 Amps. Most portable power packs only do 1 or 2, maybe 2.4 amps at best. Search for a battery pack with a USB-C connector on it. The USB-C port should have an output of 5v/3a. The output is exactly what is needed to run the Raspberry Pi 400. Make sure you also have a USB-C to USB-C cable that will allow you to connect the power bank directly to the Pi 400.
You will then need to pick your OS and get the image placed onto the SD card. In my case, I will be using Raspbian.
After booting the system, you need to configure the settings that it prompts you at the first startup. Reboot if needed and open a Terminal to perform most of the following installation and configuration changes.
Open the Menu in Raspbian and go to 'Preferences'. Highlight and select the 'Raspberry Pi Configuration' program. Select the 'Interfaces' tab and enable VNC. You may need to reboot again if needed.
In the following steps, we will be changing the WI-Fi adapter to be an Access Point (AP). What this means is that the Wi-Fi on the Pi 400 will be able to be accessed as if it were a router. Once a client connects to the AP, it will issue an IP Address using DHCP. We are not using the Pi 400 as a router, but simply to connect to it with a device to use as a monitor. In this way, you can use your phone, Android tablet or an Apple IPad as the screen and not be required to have a television or PC monitor (when the family is watching sports or a movie). The monitor or television would of course need power as well. Whatever you use as a portable monitor, make sure it is fully charged.
Wi-Fi Access Point (AP)
You need to have your Pi 400 connected to an Ethernet Network and hooked up normally to a monitor or TV to get everything configured.
Perform an update by doing the following at a command prompt (if needed, since the initial Raspbian configuration should have done this already):
sudo apt update
sudo apt upgrade
If any updates were installed it would be best to reboot the system for all of the updates to take effect. Once the OS is loaded, go back to a command prompt.
Use the command ‘ifconfig’ to get information about your network connections.
NOTE: If the ‘wlan0’ does not show in the list, then you need to perform the command ‘sudo rfkill unblock wlan’. Now perform the ‘ifconfig’ command and ‘wlan0’ should now be there. This is not needed on Raspbian, but may be on another OS.
What you need is the IP Address of the 'eth0' adapter. On my system, it is listed as 'inet 192.168.1.36 netmask 255.255.255.0'. We will set up a new network with a different IP Address scheme.
For Raspbian, you need an emulator for the gaming system. I installed MAME and then copied over the BIOS and ROM files. Install MAME with the command:
sudo apt install mame
Managing the BIOS and ROM files are beyond this article. Other Emulators can work as well, but to show how to make this work, I will only work with MAME.
Next, we need to install the software that will let us create the Access Point. Perform the following command:
sudo apt install hostapd
Once it is installed, we need to have the service start automatically with the following:
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
If the Pi 400 is to truly act like a router, then we need to have it manage DNS and DHCP. Mainly, we need the Pi 400 to issue IP Addresses to the device connecting to it. In this case, the device is what is being used as a monitor. Perform the following two commands to install and configure the required software:
sudo apt install dnsmasq
sudo apt install netfilter-persistent iptables-persistent
NOTE: A screen should appear to ask if you want to back up rules. Select ‘Yes’ both times.
One last thing to install (Raspbian already has it, but another OS may not) now that will be configured later:
sudo apt install tightvncserver
The software should all be installed and must now be configured.
If we are going to use DHCP for the connecting client, then the Pi 400 needs to have a Static IP Address. Let’s use ‘192.168.33.1’ for the Pi 400 and ‘192.168.33.5’ to ‘192.168.33.10’ for the connecting devices.
To set the Static IP Address, we can edit the necessary file with the command:
sudo nano /etc/dhcpcd.conf
At the end of the file, add the following lines:
interface wlan0
static ip_address=192.168.33.1/24
nohook wpa_supplicant
Save and exit the ‘nano’ program. Now, we need to configure the DHCP Server for the wireless network when it is used.
To start, we’ll make a copy of the current configuration file and edit the original one. Use the following two commands to perform these actions:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
sudo nano /etc/dnsmasq.conf
Include the following information in the file:
interface=wlan0
dhcp-range=192.168.33.5,192.168.33.10,255.255.255.0,12h
address=/#/192.168.33.1
Save and exit the ‘nano’ program. The DHCP Server will use the IP Address Pool of 192.168.33.5 to 192.168.33.10 and allow a lease of 12 hours.
Next, we will create the configuration for the 'hostapd' service. Use the following command to create the file:
sudo nano /etc/hostapd/hostapd.conf
Use the following lines as a starting point for the basic configuration:
country_code=US
interface=wlan0
ssid=GamingNet
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=PlayNow1
wpa_pairwise=TKIP
rsn_pairwise=CCMP
NOTE: You can change the ‘country_code’ as needed. To use the IEEE 802.11a mode with the code ‘a’, IEEE 802.11b with the code ‘b’ or IEEE 802.11g with the code ‘g’. By changing the code, you may need to change the channel appropriately.
Edit the next file with the command:
sudo nano /etc/network/interfaces
Add the following lines at the end of the file:
auto wlan0
iface wlan0 inet static
address 192.168.33.1
netmask 255.255.255.0
gateway 192.168.33.1
Now, you should be able to disconnect the Ethernet cable and reboot the Pi 400 to enable the Access Point. Do not disconnect your monitor yet.
From another system or Wi-Fi device, you should see the SSID of ‘GamingNet’ show up in the list. If not, go back and check everything again. Any small typo can make a big difference. Do not connect to the 'GamingNet' yet. There are still things to do with the devices.
So, now we can see the RetroPie System as an Access Point. We still need to be able to view the screen on another device.
NOTE: One of the last things you need to do before disconnecting your monitor is to change the resolution. The setting should be set to something below 1024x768. I use 800x600. VNC Server has issues with resolutions over 1024x768, so it is best to make it less than that. Try to match the resolution with your device.
Another issue is that the Raspberry Pi boards usually will not boot if it cannot detect a monitor. You can plug any cable into the video port, but another solution is the following. Edit the file ‘/boot/config.txt’ with the command:
sudo nano /boot/config.txt
Add the following text at the end of the file:
boot.loader.raspberryPi.firmwareConfig = ''
hdmi_force_hotplug=1
'';
Save and close the file before rebooting.
VNC Server
We installed the ‘tightvncserver’ earlier, now we need to set it up. Remember, this section is for systems that do not come preinstalled with VNC Server.
We need a new service file, so execute the command:
sudo nano /etc/systemd/system/vncserver.service
In the new file, you will enter the following:
[Unit]
Description=TightVNC Server
After=network.target
[Service]
Type=forking
User=pi
ExecStart=/usr/bin/vncserver :1
ExecStop=/usr/bin/vncserver -kill :1
[Install]
WantedBy=multi.target
Save and exit the ‘nano’ app. You should now be ready to connect. A reboot may be needed to enable all the services.
Connecting a Screen
From an Android or Apple device, go to Play Store or App Store and search for VNC Viewer. The app is made by RealVNC. Make sure you get the correct app or it may not work. Other apps should work if you have one you already use.
Before you continue, you need to change your Wi-Fi connection from the device you will use as a monitor to the ‘GamingNet’ SSID.
Open the app and you should see a plus (+) in the top right corner. Press it to add a new device to connect to using VNC. You should be prompted for an IP address and a Name. For the IP Address use 192.168.33.1, which is our Pi 400. The Name can be whatever you want to remember the device, such as ‘Pi 400’.
NOTE: If there is a connection issue, add ‘:5901’ to the IP Address for a specific port number.
Next, you will be asked for more configuration information. You can change the Picture Quality, but in most cases, you should use 'Low' so there is less lag. For Interaction, use 'View-Only'. Select 'Done' in the top right of the window.
Click on the new icon you made for the 'Pi 400'. You should now be prompted for Username and Password. Use 'pi' and 'raspberry' for Raspbian. You can select 'Remember Password' so you do not need to re-enter the info every time you connect to the 400. Select 'Go' to open the connection.
The screen may not fit correctly, so you need to move the visible screen around on the physical screen of your device (if it is a touch screen).
Conclusion
I hope you find this article informative. Having a wireless system working off of one battery seems very cool.
Try this yourself and have fun with it.