pwnagotchi tft display factory
The “vanilla” hardware setup for a Pwnagotchi is a Raspberry Pi 0 W (usually referred to as RPi0W throughout this documentation). Most development and testing has been conducted on Pwnagotchis living in RPi0W bodies configured as an USB ethernet gadget device (in order to connect to it via USB). That said:
In fact, technically ANY GNU/Linux computer with a WiFi interface that supports monitor mode could be used to host a Pwnagotchi—given the appropriate configuration tweaks.
If you’re going to be taking your Pwnagotchi out into the world to find new and exciting WiFi environments (!), you’re going to need to power it with an external battery. Depending on your priorities, you may only need a small battery if you’re just going to be out for a couple hours. But if you’re going to be out all day, you might need something bigger. How do you know what you’ll need to keep your Pwnagotchi pwning?
Happily, our users have submitted some preliminary benchmarks using some popular batteries to help give you a sense for how long a particular battery is likely to be able to power your Pwnagotchi when you take it out into the WiFi wilderness. :)
If you want to use the web UI (instead of an e-ink display attached to your unit"s RPi0W) to see your Pwnagotchi"s face, check out the web UI doc for more details on using the web UI.
Before purchasing a display, see Recommendations for more details about choosing the right display. If you find yourself struggling with the screen you’ve chosen, there are dedicated #waveshare and #inky channels for troubleshooting in the Pwnagotchi Slack.
Not all displays are created equally! TFT displays, for example, work similar to an HDMI display, and they are NOT supported. Currently, all the officially-supported eInk displays are SPI displays. If you are still interested in using unsupported displays, you may be able to find a community-submitted hack in the Screens section of the Hacks page. We are not responsible for anything you break by trying to use any display that is not officially supported by the development team!
Some of the supported displays support both Black & White and Colored versions. One common question whether there are meaningful differences between the two. There are:
Color displays have a much slower refresh rate. In some cases, it can take up to 15 seconds; if slow refresh rates are something that you want to avoid, we recommend you use B&W displays.
will always have the most updated and best supported UI elements; Pwnagotchi’s primary developer (@evilsocket) will be testing new features exclusively on Waveshare V2s.
Avoid the Waveshare eInk 3-color display. The refresh time is 15 seconds. It can be over-driven much faster with a slight risk of burn-in by setting the color to ‘fastAndFurious’, which brings the refresh down to about 1 second. This might damage the display, so use it only if you understand the risk.
The Pimoroni Inky pHAT has a refresh time of several seconds. An update is available to lower the refresh time to sub-second, though increasing the risk of burn-in or artifacts by setting the color to ‘fastAndFurious’ This might damage the display, so use it only if you understand the risk.
The DFRobot display has partial refresh support, two hardware GPIO buttons, as well as a passthrough header for connecting other things, like serial GPS modules, RTCs, LEDs, etc.
We recommend housing your Pwnagotchi’s body in a case if you don’t want your Pwnagotchi to get dirty (or short the GPIO pins on the back, or be mistaken for a bomb…).
If you’re running your Pwnagotchi in headless mode (AKA without a screen) and are using its web UI instead of an e-ink screen, any generic case for a RPi0W ought to do the trick. But if you’ve installed an e-ink screen on your RPi0W in order to view your Pwnagotchi’s face without any external equipment, you’ll probably need to make or acquire a custom case.
@ohaithear’s 10 Pwnagotchi Cases is a collection of cases for all popular Pwnagotchi configurations: Waveshare and Inky screens, slimagotchi builds, PiSugar external battery, and an optional carabiner loop.
@elkentaro’s Pwnagotchi case on Thingiverse for use with a Raspberry Pi 0 and a Waveshare e-ink screen. There is 71.5x34x20mm available for the acrylic plate on the 3D printed model. (MK3S, PET, 0.25mm extruder, 0.15mm layer height.)
@3MUl0R’s Pwnagotchi case for RPi0W with Inky pHAT is the only case (that we are aware of) designed to fit the RPi0Ws fitted with the Inky pHAT e-ink display.
Once you have downloaded the latest Pwnagotchi image, you will need to use an image writing tool to install that image on your SD card. We recommend using balenaEtcher, a graphical SD card writing tool that works on Mac OS, Linux, and Windows; it is the easiest option for most users. (balenaEtcher also supports writing images directly from the ZIP file, without any unzipping required!)
Depending on the name of the WiFi interface you’re going to use, you’ll need to edit the /usr/local/share/bettercap/caplets/pwnagotchi-auto.cap and /usr/local/share/bettercap/caplets/pwnagotchi-manual.cap caplet files accordingly.
How to run bettercap and in which mode it’s up to you as long as it’s running one of those two caplets. In the default Pwnagotchi image bettercap is running as a systemd service through a launcher script.
ExecStart=/usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
This will install the default configuration file in /etc/pwnagotchi/default.toml, in order to apply customizations you’ll need to create a new /etc/pwnagotchi/config.toml file as explained in the configuration section.
having an ethernet port allows you an easier connection to the booted system. Just connect a cable to the port and Pwnagotchi get an IP address with DHCP. If a plugged ethernet cable is detected on boot it will start in MANU mode;
The "vanilla" hardware setup for a Pwnagotchi is a Raspberry Pi 0 W (usually referred to as RPi0W throughout this documentation). Most development and testing has been conducted on Pwnagotchis living in RPi0W bodies configured as an USB ethernet gadget device (in order to connect to it via USB). That said:
In fact, technically ANY GNU/Linux computer with a WiFi interface that supports monitor mode could be used to host a Pwnagotchi—given the appropriate configuration tweaks.
If you"re going to be taking your Pwnagotchi out into the world to find new and exciting WiFi environments (!), you"re going to need to power it with an external battery. Depending on your priorities, you may only need a small battery if you"re just going to be out for a couple hours. But if you"re going to be out all day, you might need something bigger. How do you know what you"ll need to keep your Pwnagotchi pwning?
Happily, our users have submitted some preliminary benchmarks using some popular batteries to help give you a sense for how long a particular battery is likely to be able to power your Pwnagotchi when you take it out into the WiFi wilderness. :)
If you want to use the web UI (instead of an e-ink display attached to your unit"s RPi0W) to see your Pwnagotchi"s face, check out the web UI doc for more details on using the web UI.
Before purchasing a display, see Recommendations for more details about choosing the right display. If you find yourself struggling with the screen you"ve chosen, there are dedicated #waveshare and #inky channels for troubleshooting in the Pwnagotchi Slack.
Not all displays are created equally! TFT displays, for example, work similar to an HDMI display, and they are NOT supported. Currently, all the officially-supported eInk displays are SPI displays. If you are still interested in using unsupported displays, you may be able to find a community-submitted hack in the Screens section of the Hacks page. We are not responsible for anything you break by trying to use any display that is not officially supported by the development team!
Some of the supported displays support both Black & White and Colored versions. One common question whether there are meaningful differences between the two. There are:
Color displays have a much slower refresh rate. In some cases, it can take up to 15 seconds; if slow refresh rates are something that you want to avoid, we recommend you use B&W displays.
will always have the most updated and best supported UI elements; Pwnagotchi"s primary developer (@evilsocket) will be testing new features exclusively on Waveshare V2s.
Avoid the Waveshare eInk 3-color display. The refresh time is 15 seconds. It can be over-driven much faster with a slight risk of burn-in by setting the color to "fastAndFurious", which brings the refresh down to about 1 second. This might damage the display, so use it only if you understand the risk.
The Pimoroni Inky pHAT has a refresh time of several seconds. An update is available to lower the refresh time to sub-second, though increasing the risk of burn-in or artifacts by setting the color to "fastAndFurious" This might damage the display, so use it only if you understand the risk.
The DFRobot display has partial refresh support, two hardware GPIO buttons, as well as a passthrough header for connecting other things, like serial GPS modules, RTCs, LEDs, etc.
We recommend housing your Pwnagotchi"s body in a case if you don"t want your Pwnagotchi to get dirty (or short the GPIO pins on the back, or be mistaken for a bomb...).
If you"re running your Pwnagotchi in headless mode (AKA without a screen) and are using its web UI instead of an e-ink screen, any generic case for a RPi0W ought to do the trick. But if you"ve installed an e-ink screen on your RPi0W in order to view your Pwnagotchi"s face without any external equipment, you"ll probably need to make or acquire a custom case.
@ohaithear"s 10 Pwnagotchi Cases is a collection of cases for all popular Pwnagotchi configurations: Waveshare and Inky screens, slimagotchi builds, PiSugar external battery, and an optional carabiner loop.
@elkentaro"s Pwnagotchi case on Thingiverse for use with a Raspberry Pi 0 and a Waveshare e-ink screen. There is 71.5x34x20mm available for the acrylic plate on the 3D printed model. (MK3S, PET, 0.25mm extruder, 0.15mm layer height.)
@3MUl0R"s Pwnagotchi case for RPi0W with Inky pHAT is the only case (that we are aware of) designed to fit the RPi0Ws fitted with the Inky pHAT e-ink display.
Once you have downloaded the latest Pwnagotchi image, you will need to use an image writing tool to install that image on your SD card. We recommend using balenaEtcher, a graphical SD card writing tool that works on Mac OS, Linux, and Windows; it is the easiest option for most users. (balenaEtcher also supports writing images directly from the ZIP file, without any unzipping required!)
Depending on the name of the WiFi interface you"re going to use, you"ll need to edit the /usr/local/share/bettercap/caplets/pwnagotchi-auto.cap and /usr/local/share/bettercap/caplets/pwnagotchi-manual.cap caplet files accordingly.
How to run bettercap and in which mode it"s up to you as long as it"s running one of those two caplets. In the default Pwnagotchi image bettercap is running as a systemd service through a launcher script.
ExecStart=/usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
This will install the default configuration file in /etc/pwnagotchi/default.toml, in order to apply customizations you"ll need to create a new /etc/pwnagotchi/config.toml file as explained in the configuration section.
having an ethernet port allows you an easier connection to the booted system. Just connect a cable to the port and Pwnagotchi get an IP address with DHCP. If a plugged ethernet cable is detected on boot it will start in MANU mode;
Following this guide LCD displays phwagotchi just for few seconds before login prompt: i"ve solved using the autologin features (use raspi-config) and changing the line to add to /etc/rc.local as follow:
So what does the Flipper Zero do that’s gotten everyone so worked up? Well, for one, it’s not so much what it can do as how it does them. Taking inspiration from the already popular pwnagotchi project, the Flipper Zero gamifies the normally rather mundane tasks of sniffing for 433 MHz signals and flashing EEPROMs with the addition of an animated dolphin that’s sustained by your hacking. If you want the little fellow to grow and be happy, you need to keep poking and prodding around at any piece of hardware you come across.
Monitor your world with Enviro and Enviro + Air Quality for Raspberry Pi! There’s a whole bunch of fancy environmental sensors on these boards, and a gorgeous little full-color LCD to display your data. They’re the perfect way to get started with citizen science and environmental monitoring!
A 128×64 pixel, 2.15″ LCD display with snazzy six-zone RGB backlight and six capacitive touch buttons. GFX HAT makes an ideal display and interfaces for your headless Pi projects.
GFX HAT riffs off our beloved Display-O-Tron HAT, but gives you the flexibility of individual pixels, letting you display more complex graphics and real typefaces, while retaining the handy capacitive touch buttons for input/navigation.
A low-energy, high-falutin, electronic paper (ePaper / eInk / EPD) display for your Pi, in three different colour schemes: red/black/white, yellow/black/white, and black/white!
Pwnagotchi is an A2C-based “AI” powered by bettercap and running on a Raspberry Pi Zero W that learns from its surrounding WiFi environment to maximize the crackable WPA key material it captures (either through passive sniffing or by performing deauthentication and association attacks). This material is collected on disk as PCAP files containing any form of handshake supported by hashcat, including full and half WPA handshakes as well as PMKIDs.
The RFID HAT for the Raspberry Pi boasts an updated UART interface running at the frequency of 125KHz with a compact design that includes a programmable 0.91” OLED Display. The HAT also comes with an RFID key card and fob.
The SparkFun Top pHAT for Raspberry Pi is intended to be at the top of a pHAT stack so you won’t find any pins for stacking on top of this board, but that’s ok because you will want to preserve your view of the 2.4″ TFT display, six RGB LED’s and three switches squeezed onto this board!
The first thing I did was add the reported CO2 concentration and ambient temperature to the weather widget display. It was a tight squeeze, but I was able to fit both in at the end of the location name. Ok! I got the hang of using the SCD-30 Python library to fetch information. That’s a great start.
Once my correct cable arrived, I moved the sensor over to the PyPortal and began working through other tasks. I hadn’t yet learned how to use CircuitPython to position and display text, so I did that next. By the time I checked my script into a shiny new git repository, it would wait for the sensor to report that a reading was ready, then pull the CO2, humidity, and temperature readings into variables. It would convert the temperature to display in degrees Fahrenheit, and display all three metrics on the screen, in green if below 1000ppm CO2, in yellow if between 1000 and 1500, and in red if above 1500ppm. I added in changing the color of the PyPortal’s neopixel LED a little later on.
I dropped a copy of my PyPortal script, installed the Blinka Python library, and got to work modifying the script to work with the 7-inch touchscreen using the Pygame library, which also features touchscreen support. I came up with a script that displays the CO2, temperature, humidity, and pressure, with red/yellow/green color changes at breakpoints defined in the script, and logs everything to a csv file.
Of course, a different screen means a different Python library for the display! So I needed to rework the script again. While I was doing that, I was also asked if it can do audible alarms (it totally can with minimal fuss if you have a Bluetooth speaker handy!) so I added that capability. I wanted to be able to easily import logged data into a MySQL database for data display in Grafana, so I set up a second log type. I added command line flags somewhere in there – you can turn debug on (or off, depending on what the default is), enable Grafana logs (off by default, you need to supply a location name for the log), pass in a local air pressure reading if you don’t have a pressure sensor attached, specify a log filename, and turn regular logging on/off (depending on the default).
Most recently, I added a sparkline history – the last 18-25 CO2 readings are displayed across the screen between the “PPM” label and the temperature / rH / pressure label. This is not a true graph, as the column heights are freshly calculated every time a new reading is added and the oldest reading is discarded. A “zero” column height is assigned to the lowest number in the set and a “100” column height is assigned to the highest number in the set. The remaining numbers are assigned varying column heights based on their relative position between the high and low numbers, and columns are Unicode characters in the Block Elements group.
The graphical output of this script can be piped out to an external display via HDMI. It can be modified to work with only a controller and an array of multi-color LEDs, a tiny OLED screen, or e-paper screens. Add a LiPo battery and a battery management board and you’ve got something very portable you can carry around with you for air quality sampling! Remember when choosing hardware that your chosen configuration is not guaranteed to work with my scripts out of the box until they’ve been tested, and even then, things can and do go wrong (usually it’s fixable and often not terribly expensive).