Pwnagotchi 01

Tue, Aug 31, 2021 2-minute read

So, I decided to start with a simple (outside from comfort zone) project during my “funemployment” time and found pwnagotchi on my todo list (which is quite huge). After some reading I bought an rpi zero and a waveshare 2.1 display, along with one SD card. First mistake was to select the Vilros kit in amazon because it doesn’t have the 40 pins solded. Also Amazon suggests to add the display and it ended became a v3, instead of the v2 that was on the images.

Hence, as a side project, I had to soldier the pins, which was somehow easy, given my lack of expertise. And I ended with a new soldering iron and some equipment.

rpi zero soldering

Setting up the pwnagotchi was simple, just follow the instructions, install, configure and power on. However the display didnt work, and after some googling I just found that the v3 version is not supported.

The display (and soldering) was ok, I could check that it was working with the example located on the github repo:

Just clone the repo, and run python3 epd_2in13_V2_test.py

Later, I found some reddit thread with instructions to use that display (copying them here, just for reference):

Then:

  • Use "waveshare213d" in config.toml
  • Modify /usr/local/lib/python3.7/dist-packages/pwnagotchi/plugins/default/ups_lite.py
 def on_ui_setup(self, ui):
        ui.add_element('ups', LabeledValue(color=BLACK, label='UPS', value='0%/0V', position=(ui.width() / 2, 0),
                                           label_font=fonts.Bold, text_font=fonts.Medium))
  • Modify /usr/local/lib/python3.7/dist-packages/pwnagotchi/plugins/default/memtemp.py
    def on_ui_setup(self, ui):
        if ui.is_waveshare_v2():
            h_pos = (180, 80)
            v_pos = (180, 61)
        elif ui.is_waveshare_v1():
            h_pos = (170, 80)
            v_pos = (170, 61)
        elif ui.is_waveshare144lcd():
            h_pos = (53, 77)
            v_pos = (78, 67)
        elif ui.is_inky():
            h_pos = (140, 68)
            v_pos = (165, 54)
        elif ui.is_waveshare27inch():
            h_pos = (192, 138)
            v_pos = (216, 122)
        else:
            h_pos = (140, 68)
            v_pos = (175, 54)


        if self.options['orientation'] == "vertical":
            ui.set('memtemp',
                   " mem:%s%%\n cpu:%s%%\n temp:%s%s" % (self.mem_usage(), self.cpu_load(), temp, symbol))
        else:
            # default to horizontal
            ui.set('memtemp',
                   " mem cpu temp\n %s%% %s%% %s%s" % (self.mem_usage(), self.cpu_load(),

And voilá

pwnagotchi running