|
|
- """
- Adafruit Raspberry Pi Blinka Setup Script
- (C) Adafruit Industries, Creative Commons 3.0 - Attribution Share Alike
- """
-
- 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")
- import os
-
- shell = Shell()
- shell.group="Blinka"
- default_python = 3
-
- def default_python_version(numeric=True):
- version = shell.run_command("python -c 'import platform; print(platform.python_version())'", suppress_message=True, return_output=True)
- if numeric:
- return float(version[0:version.rfind(".")])
- return version
-
- def sys_update():
- print("Updating System Packages")
- if not shell.run_command('sudo apt update', True):
- shell.bail("Apt failed to update indexes!")
- if not shell.run_command('sudo apt-get update', True):
- shell.bail("Apt failed to update indexes!")
- print("Upgrading packages...")
- if not shell.run_command("sudo apt-get upgrade"):
- shell.bail("Apt failed to install software!")
-
- def set_raspiconfig():
- """
- Enable various Raspberry Pi interfaces
- """
- print("Enabling I2C")
- shell.run_command("sudo raspi-config nonint do_i2c 0")
- print("Enabling SPI")
- shell.run_command("sudo raspi-config nonint do_spi 0")
- print("Enabling Serial")
- shell.run_command("sudo raspi-config nonint do_serial 0")
- print("Enabling SSH")
- shell.run_command("sudo raspi-config nonint do_ssh 0")
- print("Enabling Camera")
- shell.run_command("sudo raspi-config nonint do_camera 0")
- print("Disable raspi-config at Boot")
- shell.run_command("sudo raspi-config nonint disable_raspi_config_at_boot 0")
-
- def update_python():
- print("Making sure Python 3 is the default")
- if default_python < 3:
- shell.run_command("sudo apt-get install -y python3 git python3-pip")
- shell.run_command("sudo update-alternatives --install /usr/bin/python python $(which python2) 1")
- shell.run_command("sudo update-alternatives --install /usr/bin/python python $(which python3) 2")
- shell.run_command("sudo update-alternatives --skip-auto --config python")
-
- def update_pip():
- print("Making sure PIP is installed")
- shell.run_command("sudo apt-get install -y python3-pip")
- shell.run_command("sudo pip3 install --upgrade setuptools")
-
- def install_blinka():
- print("Installing latest version of Blinka locally")
- shell.run_command("pip3 install --upgrade adafruit-blinka")
-
- def main():
- global default_python
- shell.clear()
- # Check Raspberry Pi and Bail
- pi_model = shell.get_board_model()
- print("""This script configures your
- Raspberry Pi and installs Blinka
- """)
- print("{} detected.\n".format(pi_model))
- if not shell.is_raspberry_pi():
- shell.bail("Non-Raspberry Pi board detected. This must be run on a Raspberry Pi")
- if shell.get_os() != "Raspbian":
- shell.bail("Sorry. This script currently only runs on Raspberry Pi OS.")
- if not shell.is_python3():
- shell.bail("You must be running Python 3. Older versions have now been deprecated.")
- if default_python_version() < 3:
- shell.warn("WARNING Default System python version is {}. It will be updated to Version 3.".format(default_python_version(False)))
- default_python = 2
- if not shell.prompt("Continue?"):
- shell.exit()
- sys_update()
- set_raspiconfig()
- update_python()
- update_pip()
- install_blinka()
-
- # Done
- print("""DONE.
-
- Settings take effect on next boot.
- """)
- if not shell.prompt("REBOOT NOW?", default="y"):
- print("Exiting without reboot.")
- shell.exit()
- print("Reboot started...")
- os.sync()
- shell.reboot()
- shell.exit()
-
- # Main function
- if __name__ == "__main__":
- shell.require_root()
- main()
|