|
|
- try:
- from adafruit_shell import Shell
- except ImportError:
- raise RuntimeError("The library 'adafruit_shell' was not found. To install, try typing: sudo pip3 install adafruit-python-shell")
-
- shell = Shell()
-
- def main():
- shell.clear()
- print("""This script downloads and installs
- I2S microphone support.
- """)
- if not shell.is_raspberry_pi():
- shell.bail("Non-Raspberry Pi board detected.")
- pi_model = shell.get_board_model()
- print("{} detected.\n".format(pi_model))
- if pi_model in ("RASPBERRY_PI_ZERO", "RASPBERRY_PI_ZERO_W"):
- pimodel_select = 0
- elif pi_model in ("RASPBERRY_PI_2B", "RASPBERRY_PI_3B", "RASPBERRY_PI_3B_PLUS", "RASPBERRY_PI_3A_PLUS"):
- pimodel_select = 1
- elif pi_model in ("RASPBERRY_PI_4B", ):
- pimodel_select = 2
- else:
- shell.bail("Unsupported Pi board detected.")
-
- auto_load = shell.prompt("Auto load module at boot?")
-
- print("""
- Installing...""")
-
- # Get needed packages
- shell.run_command("apt-get -y install git raspberrypi-kernel-headers")
-
- # Clone the repo
- shell.run_command("git clone https://github.com/adafruit/Raspberry-Pi-Installer-Scripts.git")
-
- # Build and install the module
- shell.chdir("Raspberry-Pi-Installer-Scripts/i2s_mic_module")
- shell.run_command("make clean")
- shell.run_command("make")
- shell.run_command("make install")
-
- # Setup auto load at boot if selected
- if auto_load:
- shell.write_text_file(
- "/etc/modules-load.d/snd-i2smic-rpi.conf",
- "snd-i2smic-rpi"
- )
- shell.write_text_file(
- "/etc/modules-load.d/snd-i2smic-rpi.conf",
- "options snd-i2smic-rpi rpi_platform_generation={}".format(pimodel_select)
- )
-
- # Enable I2S overlay
- shell.run_command("sed -i -e 's/#dtparam=i2s/dtparam=i2s/g' /boot/config.txt")
-
- # Done
- print("""DONE.
-
- Settings take effect on next boot.
- """)
- if not shell.prompt("REBOOT NOW?", default="n"):
- print("Exiting without reboot.")
- shell.exit()
- print("Reboot started...")
- shell.reboot()
- shell.exit()
-
- # Main function
- if __name__ == "__main__":
- shell.require_root()
- main()
|