https://github.com/777arc/pysdr
PySDR.org textbook source material, feel free to post issues/PRs
https://github.com/777arc/pysdr
communications digital-signal-processing dsp plutosdr rf rtl-sdr sdr signal-processing signals usrp wireless
Last synced: 5 months ago
JSON representation
PySDR.org textbook source material, feel free to post issues/PRs
- Host: GitHub
- URL: https://github.com/777arc/pysdr
- Owner: 777arc
- License: other
- Created: 2024-01-09T03:40:48.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-15T23:53:30.000Z (5 months ago)
- Last Synced: 2025-05-16T06:03:24.495Z (5 months ago)
- Topics: communications, digital-signal-processing, dsp, plutosdr, rf, rtl-sdr, sdr, signal-processing, signals, usrp, wireless
- Language: Python
- Homepage: https://pysdr.org/
- Size: 107 MB
- Stars: 290
- Watchers: 14
- Forks: 62
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: License.md
Awesome Lists containing this project
README
# PySDR Textbook Source Material
This repo contains the source content used to generate the textbook [PySDR: A Guide to SDR and DSP using Python](https://pysdr.org) hosted at https://pysdr.org.
Feel free to submit an issue, or even a Pull Request (PR) with fixes or improvements. Those who submit valuable feedback/fixes be permanently added to the acknowledgments section. Not good at Git but have changes to suggest? Feel free to email Marc at marc@pysdr.org.
![]()
## Building
Note that the website is now automatically built and deployed with each push/merge into master branch, using the GitHub action [build-and-deploy.yml](https://github.com/777arc/PySDR/blob/master/.github/workflows/build-and-deploy.yml) and the GitHub pages system for hosting the actual textbook.
For testing changes to the textbook locally, you can build using the following steps:
### Ubuntu/Debian
Look at `.github/workflows/build-and-deploy.yml` and run the apt/pip installs, then:
```bash
make html
make html-fr
make html-nl
make html-ukraine
make html-zh
make html-ja
```In _build there should be an index.html that represents the main page of the English site
Note: on one machine I had to add `~/.local/bin` to PATH
### Windows
Install pre-requisite software with:
1. Install Tex Live from the install-tl-windows.exe link towards the beginning of https://www.tug.org/texlive/acquire-netinstall.html (after opening it, choose the Install option). When a box pops up, click Advanced. It will mention `Installation root C:/texlive/2025` which we need later. Uncheck Install TeXworks front end because we wont need it. Under Scheme click "change" and choose `basic scheme`. Hit Install. It will take a while because it installs a lot of common latex packages, you can do the remaining steps while this installs. You know it worked if you now have a `C:\texlive\2025\bin\windows\latex.exe`.
2. From the Microsoft Store install Python 3.10 (3.8-3.12 is fine too if you already have it installed).
3. In a PowerShell terminal (click start menu then type powershell, or open a terminal in VSCode) run `pip install sphinx sphinxcontrib-tikz patreon setuptools`
4. `cd` to the directory you cloned PySDR
5. Separately, open "Tex live command-line" app from start menu, then run `tlmgr install dvisvgm pgf anyfontsize` (pgf is tikz).Build the English version only using:
```
python -m sphinx.cmd.build -b html -D imgmath_latex="C:\texlive\2025\bin\windows\latex.exe" -D imgmath_dvisvgm="C:\texlive\2025\bin\windows\dvisvgm.exe" . _build
```The first time running this it might take a while because it has to download LaTeX packages.
## Creating a PDF Export
Not fully working yet due to animated gifs, they all need to be removed for this to not error out:
```
sudo apt-get install -y latexmk
sphinx-build -b latex . _build/latex
make latexpdf
```## Misc
Ideas for future chapters:
* Equalization, would be the last step needed to finish the end-to-end communications link
* OFDM, simulating OFDM and CP, show via Python how it turns freq selective fading into flat fading
* How to create real-time SDR apps with GUIs in Python using pyqt and pyqtgraph, or even just matplotlib with updating
* Python code that lets the Pluto (or RTL-SDR) act as an FM receiver, like with sound output
* End-to-end example that shows how to detect start of packet and other concepts not covered in RDS chapter
* Intro to radar
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported License.