# [`raspi-revcode`][]
Parse [Raspberry Pi revision codes][].
[`raspi-revcode`]: https://git.rcrnstn.net/rcrnstn/raspi-revcode
[Raspberry Pi revision codes]: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-revision-codes
## Usage
`raspi-revcode --help`:
```
usage: raspi_revcode.py [-h] [--version] [<code>]
Parse Raspberry Pi revision codes.
positional arguments:
<code> A hexadecimal revision code to parse. If not given,
'/proc/cpuinfo' will be used to get the revision code of the
current device.
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
```
## Examples
The following example shows calling `raspi-revcode` from the shell, and the
produced output:
```
$ raspi-revcode 0012
Type : A+
Revision : 1.1
Memory size : 256MB
Manufacturer : Sony UK
New flag : Old-style revision
Warranty bit : Warranty is intact
$ raspi-revcode 900021
Revision : 1.1
Type : A+
Processor : BCM2835
Manufacturer : Sony UK
Memory size : 512MB
New flag : New-style revision
Warranty bit : Warranty is intact
OTP Read : OTP reading allowed
OTP Program : OTP programming allowed
Overvoltage : Overvoltage allowed
$ raspi-revcode ffffffff
Revision : 1.15
Type : <UNEXPECTED 0xff>
Processor : <UNEXPECTED 0xf>
Manufacturer : <UNEXPECTED 0xf>
Memory size : <UNEXPECTED 0x7>
New flag : New-style revision
Unused : <UNEXPECTED 0x1>
Warranty bit : Warranty has been voided by overclocking
Unused : <UNEXPECTED 0x7>
OTP Read : OTP reading disallowed
OTP Program : OTP programming disallowed
Overvoltage : Overvoltage disallowed
```
## Install
`raspi-revcode` depends only on the Python standard library which means that,
if [Python is installed][Python download], it can run be as a standalone script
without installation:
```sh
./raspi_revcode.py
```
### Prerequisites
Make sure [Python is installed][Python download], [`pip`][] is available and
the [`pip`][], [`setuptools`][] and [`wheel`][] packages are up to date:
```sh
python3 -m pip install --user --upgrade pip setuptools wheel
```
Reference: [Python Packaging User Guide: Requirements for Installing
Packages][].
[Python download]: https://python.org/download
[`pip`]: https://pip.readthedocs.io
[`setuptools`]: https://setuptools.readthedocs.io
[`wheel`]: https://wheel.readthedocs.io
[Python Packaging User Guide: Requirements for Installing Packages]: https://packaging.python.org/tutorials/installing-packages/#requirements-for-installing-packages
### With [`pipx`][], for users
Make sure [`pipx`][] is installed:
```sh
python3 -m pip install --user pipx
```
Install `raspi-revcode`:
```sh
pipx install "git+https://git.rcrnstn.net/rcrnstn/raspi-revcode"
```
`raspi-revcode` should now be in your [`PATH`][] (if not, run `python3 -m pipx
ensurepath`).
Reference: [Python Packaging User Guide: Installing stand alone command line
tools][].
[`pipx`]: https://pipxproject.github.io/pipx/
[`PATH`]: https://en.wikipedia.org/wiki/PATH_(variable)
[Python Packaging User Guide: Installing stand alone command line tools]: https://packaging.python.org/guides/installing-stand-alone-command-line-tools/
### Into [`venv`][], for developers
Clone and install into a repository [`venv`][] virtual environment:
```sh
git clone "https://git.rcrnstn.net/rcrnstn/raspi-revcode"
cd "raspi-revcode"
python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install --editable .
```
`raspi-revcode` should now be in your (virtual environment) [`PATH`][].
Reference: [Python Packaging User Guide: Installing packages using pip and
virtual environments][].
[`venv`]: https://docs.python.org/3/library/venv.html
[Python Packaging User Guide: Installing packages using pip and virtual environments]: https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/
## License
Licensed under the [ISC License][] unless otherwise noted, see the
[`LICENSE`][] file.
[ISC License]: https://choosealicense.com/licenses/isc
[`LICENSE`]: LICENSE