PySDR.org textbook source material, feel free to post issues/PRs https://pysdr.org/
Find a file
FGoedhart 1ede3dd926
Minor listing/numbering error (#103)
The sub-heading: "Convolutie in Frequentie:" was numbered: 1. but is now corrected to 5.
2025-09-05 12:15:22 -04:00
.github/workflows Add Japanese build support and translate index-ja and intro pages (#84) 2025-05-05 00:45:07 -04:00
.vscode bpsk gen and psd working in javascript 2024-05-28 15:54:58 -04:00
_images 2d Beamforming Chapter (#98) 2025-06-20 04:25:37 -04:00
_static switched from imgmath to mathjax (#101) 2025-07-26 00:25:16 -04:00
_templates Add Japanese build support and translate index-ja and intro pages (#84) 2025-05-05 00:45:07 -04:00
content switched from imgmath to mathjax (#101) 2025-07-26 00:25:16 -04:00
content-es update my email 2025-01-02 00:46:12 -05:00
content-fr ✏️ fix typos (#91) 2025-06-03 12:14:51 -04:00
content-ja Add Japanese translation for “IQ Sampling” (#90) 2025-06-01 11:31:07 -04:00
content-nl Minor listing/numbering error (#103) 2025-09-05 12:15:22 -04:00
content-ukraine update my email 2025-01-02 00:46:12 -05:00
content-zh [Chinese Translation] Update (#99) 2025-06-20 12:52:28 -04:00
figure-generating-scripts missed a transpose for 2d array plot 2025-07-07 13:38:56 -04:00
powerpoints tweaks to beamforming taxonomy 2025-04-04 02:06:34 -04:00
.gitignore misc DOA improvements (#86) 2025-05-02 01:33:33 -04:00
conf.py switched from imgmath to mathjax (#101) 2025-07-26 00:25:16 -04:00
index-es.rst Correcto some errors 2024-03-21 18:12:05 -05:00
index-fr.rst Tarikbenaddi master (#77) 2022-11-21 00:07:55 -05:00
index-ja.rst Add Japanese translation for “IQ Sampling” (#90) 2025-06-01 11:31:07 -04:00
index-nl.rst Added dutch homepage, modified homepage app to take the labels as a dictionary for translations, updated some main pages with changes since last year. Stil have to work on all the new chapters. (#58) 2024-12-07 15:15:35 +01:00
index-ukraine.rst Ukraine translation (#85) 2023-12-14 07:33:59 -05:00
index-zh.rst [Chinese Translation] Update (#70) 2025-02-14 09:07:55 +09:00
index.rst 2d Beamforming Chapter (#98) 2025-06-20 04:25:37 -04:00
License.md switch from CC 3.0 to 4.0 2024-04-16 00:30:50 -04:00
make.bat created french version, only first two chapters are auto converted 2022-05-31 03:01:47 -04:00
Makefile switched from imgmath to mathjax (#101) 2025-07-26 00:25:16 -04:00
myicon.png added favicon 2024-03-12 01:52:46 -04:00
README.md switched from imgmath to mathjax (#101) 2025-07-26 00:25:16 -04:00
requirements.txt downgrade sphinx version so that it compiles way faster 2024-11-29 15:32:54 -05:00
scrape_patreon.py misc DOA improvements (#86) 2025-05-02 01:33:33 -04:00
spelling_wordlist.txt 2d Beamforming Chapter (#98) 2025-06-20 04:25:37 -04:00

PySDR Textbook Source Material

This repo contains the source content used to generate the textbook PySDR: A Guide to SDR and DSP using Python 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 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:

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. From the Microsoft Store install Python 3.10 (3.8-3.12 is fine too if you already have it installed).
  2. In a PowerShell terminal (click start menu then type powershell, or open a terminal in VSCode) run pip install sphinx sphinxcontrib-tikz patreon setuptools
  3. cd to the directory you cloned PySDR

Build the English version only using:

python -m sphinx.cmd.build -b html . _build

The first time running this it might take a while because it has to download LaTeX packages.

Test the javascript part with the following to avoid CORS errors:

cd _build
python -m http.server

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

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported License.