kenschneider18/rpi-metro-display

Display Not Functioning

Closed this issue · 11 comments

Thanks for creating such an awesome project like this! I heard about it from DCist.

I followed all of the directions, including getting the same supplies (two Adafruit 64x32 boards, matrix HAT, etc.) and plugged everything in, but I can't seem to get the displays to run.

Edit: I confirmed using some demos from rpi-rgb-led-matrix that everything is wired properly. I've re-imaged and installed again thinking I missed something the first time around, but the program still won't run.

If you have any ideas about what I'm missing, I would appreciate it!

Is there a log.txt that's been created in the rpi-metro-display folder? Can you post the output? What happens if you try running sudo ./run.sh from the rpi-metro-display directory directly?

Here is the output log.txt file. Running sudo ./run.sh from that directory seems to do nothing - the display doesn't run.

dietpi@DietPi:~/metro-sign/rpi-metro-display$ nano log.txt

  GNU nano 7.2                         log.txt                                  
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7f7eca4800>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7fb4364ac0>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7f9c254ac0>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7f98ea4ac0>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7fa2150b80>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7fab0f4ac0>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7f8a3c0b80>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7f8ca10b80>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7fa8164ac0>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7f94694ac0>
Uncaught exception!
Type: <class 'TypeError'>
Value: one character bytes, bytearray or integer expected
TB: <traceback object at 0x7f9ed00a80>

What's the output of running python --version. I suspect that you're trying to run Python 3 on Python 2 code or vice versa. Are you on the master (default) branch or have you switched to another?

If the output of python --version shows you're using Python 3 then you'll need to switch to the Python 3 branch of this code. I've been meaning to make the Python 3 version the default but haven't gotten around to it.

git checkout update/python3

Then you'll want to redo step 2 from the Install rpi-metro-display section of the guide when looking at the Readme version from that branch (linked above).

Then skip back down to step 7 and do the pip install:
sudo python3 -m pip install --break-system-packages -r requirements.txt

Let me know if that helps :)

Definitely got closer! I was running some weird hybrid between the original branch and the Python 3 branch because I didn't know the latter existed and was trying to make it work on my own. But this time, during the pip install I encountered a very long error involving building Pillow.

  Building wheel for Pillow (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [184 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-cpython-311
      creating build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FtexImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PpmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageFont.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/JpegImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PsdImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/SgiImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/__main__.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/Image.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_binary.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PyAccess.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageSequence.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/DdsImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/XpmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageTransform.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BmpImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImagePalette.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/IptcImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TiffImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GdImageFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_util.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/CurImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TiffTags.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FliImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/WebPImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageGrab.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/WmfImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageEnhance.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageShow.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PdfImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageOps.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GbrImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageTk.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BlpImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PcfFontFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/WalImageFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageMorph.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TgaImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/EpsImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_tkinter_finder.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/IcoImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageWin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GimpGradientFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageDraw.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/features.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/JpegPresets.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/__init__.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/DcxImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImagePath.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageDraw2.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageFilter.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PcdImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PSDraw.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageChops.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FpxImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageCms.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ExifTags.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PdfParser.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FontFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PaletteFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageMath.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageQt.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PalmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GifImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImtImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_version.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MicImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MspImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ContainerIO.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageColor.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GimpPaletteFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PixarImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageStat.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BdfFontFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MpegImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TarIO.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/SunImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PcxImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/XbmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PngImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageMode.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MpoImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      running egg_info
      writing src/Pillow.egg-info/PKG-INFO
      writing dependency_links to src/Pillow.egg-info/dependency_links.txt
      writing top-level names to src/Pillow.egg-info/top_level.txt
      reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.c'
      warning: no files found matching '*.h'
      warning: no files found matching '*.sh'
      warning: no previously-included files found matching '.appveyor.yml'
      warning: no previously-included files found matching '.coveragerc'
      warning: no previously-included files found matching '.codecov.yml'
      warning: no previously-included files found matching '.editorconfig'
      warning: no previously-included files found matching '.readthedocs.yml'
      warning: no previously-included files found matching 'azure-pipelines.yml'
      warning: no previously-included files matching '.git*' found anywhere in distribution
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      no previously-included directories found matching '.azure-pipelines'
      no previously-included directories found matching '.travis'
      adding license file 'LICENSE'
      writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
      running build_ext
      
      
      The headers or library files could not be found for jpeg,
      a required dependency when compiling Pillow from source.
      
      Please see the install instructions at:
         https://pillow.readthedocs.io/en/latest/installation.html
      
      Traceback (most recent call last):
        File "/tmp/pip-install-l7uwvzgu/pillow_4b0ba2033e3f41c48e5162ecf159ffae/setup.py", line 852, in <module>
          setup(
        File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 108, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
          super().run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/usr/lib/python3/dist-packages/wheel/bdist_wheel.py", line 325, in run
          self.run_command("build")
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
          super().run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/build.py", line 132, in run
          self.run_command(cmd_name)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
          super().run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/build_ext.py", line 346, in run
          self.build_extensions()
        File "/tmp/pip-install-l7uwvzgu/pillow_4b0ba2033e3f41c48e5162ecf159ffae/setup.py", line 687, in build_extensions
          raise RequiredDependencyException(f)
      RequiredDependencyException: jpeg
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-l7uwvzgu/pillow_4b0ba2033e3f41c48e5162ecf159ffae/setup.py", line 903, in <module>
          raise RequiredDependencyException(msg)
      RequiredDependencyException:
      
      The headers or library files could not be found for jpeg,
      a required dependency when compiling Pillow from source.
      
      Please see the install instructions at:
         https://pillow.readthedocs.io/en/latest/installation.html
      
      
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for Pillow
  Running setup.py clean for Pillow
Successfully built image MarkupSafe
Failed to build Pillow
Installing collected packages: pytz, certifi, Werkzeug, urllib3, sqlparse, six, Pillow, MarkupSafe, itsdangerous, idna, click, chardet, asgiref, requests, jinja2, django, image, Flask
  Running setup.py install for Pillow ... error
  error: subprocess-exited-with-error
  
  × Running setup.py install for Pillow did not run successfully.
  │ exit code: 1
  ╰─> [189 lines of output]
      running install
      /usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-cpython-311
      creating build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FtexImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PpmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageFont.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/JpegImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PsdImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/SgiImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/__main__.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/Image.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_binary.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PyAccess.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageSequence.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/DdsImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/XpmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageTransform.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BmpImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImagePalette.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/IptcImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TiffImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GdImageFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_util.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/CurImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TiffTags.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FliImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/WebPImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageGrab.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/WmfImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageEnhance.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageShow.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PdfImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageOps.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GbrImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageTk.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BlpImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PcfFontFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/WalImageFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageMorph.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TgaImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/EpsImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_tkinter_finder.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/IcoImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageWin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GimpGradientFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageDraw.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/features.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/JpegPresets.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/__init__.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/DcxImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImagePath.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageDraw2.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageFilter.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PcdImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PSDraw.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageChops.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FpxImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageCms.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ExifTags.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PdfParser.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FontFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PaletteFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageMath.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageQt.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PalmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GifImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImtImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/_version.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MicImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MspImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ContainerIO.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageColor.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GimpPaletteFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PixarImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageStat.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/BdfFontFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MpegImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/TarIO.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageFile.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/SunImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PcxImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/XbmImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/PngImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/ImageMode.py -> build/lib.linux-aarch64-cpython-311/PIL
      copying src/PIL/MpoImagePlugin.py -> build/lib.linux-aarch64-cpython-311/PIL
      running egg_info
      writing src/Pillow.egg-info/PKG-INFO
      writing dependency_links to src/Pillow.egg-info/dependency_links.txt
      writing top-level names to src/Pillow.egg-info/top_level.txt
      reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.c'
      warning: no files found matching '*.h'
      warning: no files found matching '*.sh'
      warning: no previously-included files found matching '.appveyor.yml'
      warning: no previously-included files found matching '.coveragerc'
      warning: no previously-included files found matching '.codecov.yml'
      warning: no previously-included files found matching '.editorconfig'
      warning: no previously-included files found matching '.readthedocs.yml'
      warning: no previously-included files found matching 'azure-pipelines.yml'
      warning: no previously-included files matching '.git*' found anywhere in distribution
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      no previously-included directories found matching '.azure-pipelines'
      no previously-included directories found matching '.travis'
      adding license file 'LICENSE'
      writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
      running build_ext
      
      
      The headers or library files could not be found for jpeg,
      a required dependency when compiling Pillow from source.
      
      Please see the install instructions at:
         https://pillow.readthedocs.io/en/latest/installation.html
      
      Traceback (most recent call last):
        File "/tmp/pip-install-l7uwvzgu/pillow_4b0ba2033e3f41c48e5162ecf159ffae/setup.py", line 852, in <module>
          setup(
        File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 108, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
          super().run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 68, in run
          return orig.install.run(self)
                 ^^^^^^^^^^^^^^^^^^^^^^
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/install.py", line 698, in run
          self.run_command('build')
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
          super().run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/build.py", line 132, in run
          self.run_command(cmd_name)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 1213, in run_command
          super().run_command(command)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/command/build_ext.py", line 346, in run
          self.build_extensions()
        File "/tmp/pip-install-l7uwvzgu/pillow_4b0ba2033e3f41c48e5162ecf159ffae/setup.py", line 687, in build_extensions
          raise RequiredDependencyException(f)
      RequiredDependencyException: jpeg
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-l7uwvzgu/pillow_4b0ba2033e3f41c48e5162ecf159ffae/setup.py", line 903, in <module>
          raise RequiredDependencyException(msg)
      RequiredDependencyException:
      
      The headers or library files could not be found for jpeg,
      a required dependency when compiling Pillow from source.
      
      Please see the install instructions at:
         https://pillow.readthedocs.io/en/latest/installation.html
      
      
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> Pillow

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

Have you installed everything from step 2 again? A lot changed from the python 2 branch to python 3

sudo apt install build-essential python3 python3-all-dev python3-setuptools python3-wheel python3-pip git zlib1g-dev libopenjp2-7

I suspect that you're missing the jpeg dependency for Pillow which for Python3 you'll need to get from libopenjp2-7 at the end of the above line, but that part doesn't come from this codebase so I'm not sure.

Worst case you could try a re-imaging the SD card and starting fresh and just making sure you use the README from the Python 3 branch:
https://github.com/kenschneider18/rpi-metro-display/blob/update/python3/README.md

Got it working!!

I did a full re-image and realized where I was running into an issue. In the updated branch, step 6's command was having me download the master branch and not the updated one. When I would go to install the dependencies, that long error with Pillow would pop up and cause it to crash because it was pulling the master's requirements.txt file instead of the update/python3's file.

I changed the command to git clone -b update/python3 https://github.com/kenschneider18/rpi-metro-display.git and was able to continue with the installation with no errors and got it up and running shortly thereafter.

One last question - what do you recommend for joining the displays together and creating that nice case I can see in the demo photos? Would love to do something similar to that.

IMG_0430

Thank you for all your help! Now time to make this a permanent setup 🙂

Okay, so it turns out there's still an issue, albeit much, much smaller than before.

Whenever the display boots up, only the nearest train shows up normally on the screen. The bottom two appear with in red and are missing the car list. This is consistent as each train departs and clears off the board.

IMG_0431

Was it at one point showing the correct colors? My money is on this being some sort of hardware issue, especially since the bottom of the "y" in the second line is red., I would check all your connections between the hat, the Pi, and the two displays.

That was it - the data cable from the hat to the first display was a bit loose. I unplugged it and plugged it back in, jiggled it a little, and good to go!

Glad to hear it, congrats on getting it up and running!

Going to close this out since your issue is resolved :)

j-ea commented

Thank you @dbsirota. git clone -b update/python3 https://github.com/kenschneider18/rpi-metro-display.git was the fix I was looking for in step 6.