summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-03-09 15:52:22 +0000
committerCoprDistGit <infra@openeuler.org>2023-03-09 15:52:22 +0000
commit245ab7d3bd5b7e4d78fc082ba0e90ff51b1e7323 (patch)
tree2cdc7a0f51d163800e20aa5bdc4f9909df028b17
parent3a5d163a22707a1f20c7ece034f46644b0ba1836 (diff)
automatic import of python-pyrtlsdr
-rw-r--r--.gitignore1
-rw-r--r--python-pyrtlsdr.spec642
-rw-r--r--sources1
3 files changed, 644 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..09812c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/pyrtlsdr-0.2.93.tar.gz
diff --git a/python-pyrtlsdr.spec b/python-pyrtlsdr.spec
new file mode 100644
index 0000000..11af72a
--- /dev/null
+++ b/python-pyrtlsdr.spec
@@ -0,0 +1,642 @@
+%global _empty_manifest_terminate_build 0
+Name: python-pyrtlsdr
+Version: 0.2.93
+Release: 1
+Summary: A Python wrapper for librtlsdr (a driver for Realtek RTL2832U based SDR's)
+License: GPLv3
+URL: https://github.com/pyrtlsdr/pyrtlsdr
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c4/cb/e81c73584fbdd9c8d0e85508aa89125c88a297a29b350dc1e0775d2be8d3/pyrtlsdr-0.2.93.tar.gz
+BuildArch: noarch
+
+
+%description
+# pyrtlsdr
+A Python wrapper for librtlsdr (a driver for Realtek RTL2832U based SDR's)
+
+[![PyPI](https://img.shields.io/pypi/v/pyrtlsdr)](https://pypi.org/project/pyrtlsdr) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/pyrtlsdr/pyrtlsdr/Python%20package) ![PyPI - Downloads](https://img.shields.io/pypi/dm/pyrtlsdr) [![Coveralls](https://img.shields.io/coveralls/github/pyrtlsdr/pyrtlsdr)](https://coveralls.io/github/pyrtlsdr/pyrtlsdr)
+
+# Description
+
+pyrtlsdr is a simple Python interface to devices supported by the RTL-SDR project, which turns certain USB DVB-T dongles
+employing the Realtek RTL2832U chipset into low-cost, general purpose software-defined radio receivers. It wraps many of the
+functions in the [librtlsdr library](https://github.com/librtlsdr/librtlsdr) including asynchronous read support
+and also provides a more Pythonic API.
+
+# Links
+
+* Documentation:
+ * https://pyrtlsdr.readthedocs.io/
+* Releases:
+ * https://pypi.org/project/pyrtlsdr/
+* Source code and project home:
+ * https://github.com/pyrtlsdr/pyrtlsdr
+* Releases for `librtlsdr`:
+ * https://github.com/librtlsdr/librtlsdr/releases
+
+# Usage
+
+pyrtlsdr can be installed by downloading the source files and running `python setup.py install`, or using [pip](https://pip.pypa.io/en/stable/) and
+`pip install pyrtlsdr`.
+
+All functions in librtlsdr are accessible via librtlsdr.py and a Pythonic interface is available in rtlsdr.py (recommended).
+Some documentation can be found in docstrings in the latter file.
+
+## Examples
+
+### Simple way to read and print some samples:
+
+```python
+from rtlsdr import RtlSdr
+
+sdr = RtlSdr()
+
+# configure device
+sdr.sample_rate = 2.048e6 # Hz
+sdr.center_freq = 70e6 # Hz
+sdr.freq_correction = 60 # PPM
+sdr.gain = 'auto'
+
+print(sdr.read_samples(512))
+```
+
+### Plotting the PSD with matplotlib:
+
+```python
+from pylab import *
+from rtlsdr import *
+
+sdr = RtlSdr()
+
+# configure device
+sdr.sample_rate = 2.4e6
+sdr.center_freq = 95e6
+sdr.gain = 4
+
+samples = sdr.read_samples(256*1024)
+sdr.close()
+
+# use matplotlib to estimate and plot the PSD
+psd(samples, NFFT=1024, Fs=sdr.sample_rate/1e6, Fc=sdr.center_freq/1e6)
+xlabel('Frequency (MHz)')
+ylabel('Relative power (dB)')
+
+show()
+```
+
+### Resulting Plot:
+![](https://i.imgur.com/hFhg8.png "Resulting Plot")
+
+See the files 'demo_waterfall.py' and 'test.py' for more examples.
+
+## Handling multiple devices:
+*(added in v2.5.6)*
+```python
+from rtlsdr import RtlSdr
+
+# Get a list of detected device serial numbers (str)
+serial_numbers = RtlSdr.get_device_serial_addresses()
+
+# Find the device index for a given serial number
+device_index = RtlSdr.get_device_index_by_serial('00000001')
+
+sdr = RtlSdr(device_index)
+
+
+# Or pass the serial number directly:
+sdr = RtlSdr(serial_number='00000001')
+```
+
+### Note
+Most devices by default have the same serial number: '0000001'. This can be set
+to a custom value by using the [rtl_eeprom][rtl_eeprom] utility packaged with `librtlsdr`.
+
+[rtl_eeprom]: https://manpages.ubuntu.com/manpages/trusty/man1/rtl_eeprom.1.html
+
+# Experimental features
+
+Two new submodules are available for testing: **rtlsdraio**, which adds native Python 3 asynchronous support (asyncio module), and **rtlsdrtcp** which adds a TCP server/client for accessing a device over the network. See the respective modules in the rtlsdr folder for more details and feel free to test and report any bugs!
+
+## rtlsdraio
+Note that the rtlsdraio module is automatically imported and adds `stream()` and `stop()` methods to the normal `RtlSdr` class. It also requires the new `async`/`await` syntax introduced in Python 3.5+.
+
+The syntax is basically:
+
+```python
+import asyncio
+from rtlsdr import RtlSdr
+
+async def streaming():
+ sdr = RtlSdr()
+
+ async for samples in sdr.stream():
+ # do something with samples
+ # ...
+
+ # to stop streaming:
+ await sdr.stop()
+
+ # done
+ sdr.close()
+
+loop = asyncio.get_event_loop()
+loop.run_until_complete(streaming())
+```
+
+## rtlsdrtcp
+The `RtlSdrTcpServer` class is meant to be connected physically to an SDR dongle and communicate with an instance of `RtlSdrTcpClient`. The client is intended to function as closely as possible to the base RtlSdr class (as if it had a physical dongle attached to it).
+
+Both of these classes have the same arguments as the base `RtlSdr` class with the addition of `hostname` and `port`:
+```python
+server = RtlSdrTcpServer(hostname='192.168.1.100', port=12345)
+server.run_forever()
+# Will listen for clients until Ctrl-C is pressed
+```
+```python
+# On another machine (typically)
+client = RtlSdrTcpClient(hostname='192.168.1.100', port=12345)
+client.center_freq = 2e6
+data = client.read_samples()
+```
+
+## TCP Client Mode
+On platforms where the `librtlsdr` library cannot be installed/compiled, it is possible to import the `RtlSdrTcpClient` only by setting the environment variable `"RTLSDR_CLIENT_MODE"` to `"true"`. If this is set, no other modules will be available.
+
+*Feature added in v0.2.4*
+
+
+# Dependencies
+
+* Windows/Linux/OSX
+* Python 2.7.x/3.3+
+* [librtlsdr](https://github.com/librtlsdr/librtlsdr/releases)
+* **Optional**: NumPy (wraps samples in a more convenient form)
+
+matplotlib is also useful for plotting data. The librtlsdr binaries (rtlsdr.dll in Windows and librtlsdr.so in Linux)
+should be in the pyrtlsdr directory, or a system path. Note that these binaries may have additional dependencies.
+
+# Todo
+
+There are a few remaining functions in librtlsdr that haven't been wrapped yet. It's a simple process if there's an additional
+function you need to add support for, and please send a pull request if you'd like to share your changes.
+
+# Troubleshooting
+
+* Some operating systems (Linux, OS X) seem to result in libusb buffer issues when performing small reads. Try reading 1024
+(or higher powers of two) samples at a time if you have problems.
+
+* If you're having librtlsdr import errors:
+ * **Windows**: Make sure all the librtlsdr DLL files (librtlsdr.dll, libusb-1.0.dll) are in your system path, or the same folder
+as this README file. Also make sure you have all of *their* dependencies (e.g. libgcc_s_dw2-1.dll or possibly the Visual Studio runtime files). If rtl_sdr.exe
+works, then you should be okay. Also note that you can't mix the 64 bit version of Python with 32 bit builds of librtlsdr, and vice versa.
+ * **Linux**: Make sure your LD_LIBRARY_PATH environment variable contains the directory where the librtlsdr.so.0 library is located. You can do this in a shell with (for example): `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib`. See [this issue](https://github.com/roger-/pyrtlsdr/issues/7) for more details.
+
+# License
+
+All of the code contained here is licensed by the GNU General Public License v3.
+
+# Credit
+
+Credit to dbasden for his earlier wrapper [python-librtlsdr](https://github.com/dbasden/python-librtlsdr) and all the
+contributors on GitHub.
+
+Copyright (C) 2013 by Roger <https://github.com/pyrtlsdr/pyrtlsdr>
+
+
+%package -n python3-pyrtlsdr
+Summary: A Python wrapper for librtlsdr (a driver for Realtek RTL2832U based SDR's)
+Provides: python-pyrtlsdr
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-pyrtlsdr
+# pyrtlsdr
+A Python wrapper for librtlsdr (a driver for Realtek RTL2832U based SDR's)
+
+[![PyPI](https://img.shields.io/pypi/v/pyrtlsdr)](https://pypi.org/project/pyrtlsdr) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/pyrtlsdr/pyrtlsdr/Python%20package) ![PyPI - Downloads](https://img.shields.io/pypi/dm/pyrtlsdr) [![Coveralls](https://img.shields.io/coveralls/github/pyrtlsdr/pyrtlsdr)](https://coveralls.io/github/pyrtlsdr/pyrtlsdr)
+
+# Description
+
+pyrtlsdr is a simple Python interface to devices supported by the RTL-SDR project, which turns certain USB DVB-T dongles
+employing the Realtek RTL2832U chipset into low-cost, general purpose software-defined radio receivers. It wraps many of the
+functions in the [librtlsdr library](https://github.com/librtlsdr/librtlsdr) including asynchronous read support
+and also provides a more Pythonic API.
+
+# Links
+
+* Documentation:
+ * https://pyrtlsdr.readthedocs.io/
+* Releases:
+ * https://pypi.org/project/pyrtlsdr/
+* Source code and project home:
+ * https://github.com/pyrtlsdr/pyrtlsdr
+* Releases for `librtlsdr`:
+ * https://github.com/librtlsdr/librtlsdr/releases
+
+# Usage
+
+pyrtlsdr can be installed by downloading the source files and running `python setup.py install`, or using [pip](https://pip.pypa.io/en/stable/) and
+`pip install pyrtlsdr`.
+
+All functions in librtlsdr are accessible via librtlsdr.py and a Pythonic interface is available in rtlsdr.py (recommended).
+Some documentation can be found in docstrings in the latter file.
+
+## Examples
+
+### Simple way to read and print some samples:
+
+```python
+from rtlsdr import RtlSdr
+
+sdr = RtlSdr()
+
+# configure device
+sdr.sample_rate = 2.048e6 # Hz
+sdr.center_freq = 70e6 # Hz
+sdr.freq_correction = 60 # PPM
+sdr.gain = 'auto'
+
+print(sdr.read_samples(512))
+```
+
+### Plotting the PSD with matplotlib:
+
+```python
+from pylab import *
+from rtlsdr import *
+
+sdr = RtlSdr()
+
+# configure device
+sdr.sample_rate = 2.4e6
+sdr.center_freq = 95e6
+sdr.gain = 4
+
+samples = sdr.read_samples(256*1024)
+sdr.close()
+
+# use matplotlib to estimate and plot the PSD
+psd(samples, NFFT=1024, Fs=sdr.sample_rate/1e6, Fc=sdr.center_freq/1e6)
+xlabel('Frequency (MHz)')
+ylabel('Relative power (dB)')
+
+show()
+```
+
+### Resulting Plot:
+![](https://i.imgur.com/hFhg8.png "Resulting Plot")
+
+See the files 'demo_waterfall.py' and 'test.py' for more examples.
+
+## Handling multiple devices:
+*(added in v2.5.6)*
+```python
+from rtlsdr import RtlSdr
+
+# Get a list of detected device serial numbers (str)
+serial_numbers = RtlSdr.get_device_serial_addresses()
+
+# Find the device index for a given serial number
+device_index = RtlSdr.get_device_index_by_serial('00000001')
+
+sdr = RtlSdr(device_index)
+
+
+# Or pass the serial number directly:
+sdr = RtlSdr(serial_number='00000001')
+```
+
+### Note
+Most devices by default have the same serial number: '0000001'. This can be set
+to a custom value by using the [rtl_eeprom][rtl_eeprom] utility packaged with `librtlsdr`.
+
+[rtl_eeprom]: https://manpages.ubuntu.com/manpages/trusty/man1/rtl_eeprom.1.html
+
+# Experimental features
+
+Two new submodules are available for testing: **rtlsdraio**, which adds native Python 3 asynchronous support (asyncio module), and **rtlsdrtcp** which adds a TCP server/client for accessing a device over the network. See the respective modules in the rtlsdr folder for more details and feel free to test and report any bugs!
+
+## rtlsdraio
+Note that the rtlsdraio module is automatically imported and adds `stream()` and `stop()` methods to the normal `RtlSdr` class. It also requires the new `async`/`await` syntax introduced in Python 3.5+.
+
+The syntax is basically:
+
+```python
+import asyncio
+from rtlsdr import RtlSdr
+
+async def streaming():
+ sdr = RtlSdr()
+
+ async for samples in sdr.stream():
+ # do something with samples
+ # ...
+
+ # to stop streaming:
+ await sdr.stop()
+
+ # done
+ sdr.close()
+
+loop = asyncio.get_event_loop()
+loop.run_until_complete(streaming())
+```
+
+## rtlsdrtcp
+The `RtlSdrTcpServer` class is meant to be connected physically to an SDR dongle and communicate with an instance of `RtlSdrTcpClient`. The client is intended to function as closely as possible to the base RtlSdr class (as if it had a physical dongle attached to it).
+
+Both of these classes have the same arguments as the base `RtlSdr` class with the addition of `hostname` and `port`:
+```python
+server = RtlSdrTcpServer(hostname='192.168.1.100', port=12345)
+server.run_forever()
+# Will listen for clients until Ctrl-C is pressed
+```
+```python
+# On another machine (typically)
+client = RtlSdrTcpClient(hostname='192.168.1.100', port=12345)
+client.center_freq = 2e6
+data = client.read_samples()
+```
+
+## TCP Client Mode
+On platforms where the `librtlsdr` library cannot be installed/compiled, it is possible to import the `RtlSdrTcpClient` only by setting the environment variable `"RTLSDR_CLIENT_MODE"` to `"true"`. If this is set, no other modules will be available.
+
+*Feature added in v0.2.4*
+
+
+# Dependencies
+
+* Windows/Linux/OSX
+* Python 2.7.x/3.3+
+* [librtlsdr](https://github.com/librtlsdr/librtlsdr/releases)
+* **Optional**: NumPy (wraps samples in a more convenient form)
+
+matplotlib is also useful for plotting data. The librtlsdr binaries (rtlsdr.dll in Windows and librtlsdr.so in Linux)
+should be in the pyrtlsdr directory, or a system path. Note that these binaries may have additional dependencies.
+
+# Todo
+
+There are a few remaining functions in librtlsdr that haven't been wrapped yet. It's a simple process if there's an additional
+function you need to add support for, and please send a pull request if you'd like to share your changes.
+
+# Troubleshooting
+
+* Some operating systems (Linux, OS X) seem to result in libusb buffer issues when performing small reads. Try reading 1024
+(or higher powers of two) samples at a time if you have problems.
+
+* If you're having librtlsdr import errors:
+ * **Windows**: Make sure all the librtlsdr DLL files (librtlsdr.dll, libusb-1.0.dll) are in your system path, or the same folder
+as this README file. Also make sure you have all of *their* dependencies (e.g. libgcc_s_dw2-1.dll or possibly the Visual Studio runtime files). If rtl_sdr.exe
+works, then you should be okay. Also note that you can't mix the 64 bit version of Python with 32 bit builds of librtlsdr, and vice versa.
+ * **Linux**: Make sure your LD_LIBRARY_PATH environment variable contains the directory where the librtlsdr.so.0 library is located. You can do this in a shell with (for example): `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib`. See [this issue](https://github.com/roger-/pyrtlsdr/issues/7) for more details.
+
+# License
+
+All of the code contained here is licensed by the GNU General Public License v3.
+
+# Credit
+
+Credit to dbasden for his earlier wrapper [python-librtlsdr](https://github.com/dbasden/python-librtlsdr) and all the
+contributors on GitHub.
+
+Copyright (C) 2013 by Roger <https://github.com/pyrtlsdr/pyrtlsdr>
+
+
+%package help
+Summary: Development documents and examples for pyrtlsdr
+Provides: python3-pyrtlsdr-doc
+%description help
+# pyrtlsdr
+A Python wrapper for librtlsdr (a driver for Realtek RTL2832U based SDR's)
+
+[![PyPI](https://img.shields.io/pypi/v/pyrtlsdr)](https://pypi.org/project/pyrtlsdr) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/pyrtlsdr/pyrtlsdr/Python%20package) ![PyPI - Downloads](https://img.shields.io/pypi/dm/pyrtlsdr) [![Coveralls](https://img.shields.io/coveralls/github/pyrtlsdr/pyrtlsdr)](https://coveralls.io/github/pyrtlsdr/pyrtlsdr)
+
+# Description
+
+pyrtlsdr is a simple Python interface to devices supported by the RTL-SDR project, which turns certain USB DVB-T dongles
+employing the Realtek RTL2832U chipset into low-cost, general purpose software-defined radio receivers. It wraps many of the
+functions in the [librtlsdr library](https://github.com/librtlsdr/librtlsdr) including asynchronous read support
+and also provides a more Pythonic API.
+
+# Links
+
+* Documentation:
+ * https://pyrtlsdr.readthedocs.io/
+* Releases:
+ * https://pypi.org/project/pyrtlsdr/
+* Source code and project home:
+ * https://github.com/pyrtlsdr/pyrtlsdr
+* Releases for `librtlsdr`:
+ * https://github.com/librtlsdr/librtlsdr/releases
+
+# Usage
+
+pyrtlsdr can be installed by downloading the source files and running `python setup.py install`, or using [pip](https://pip.pypa.io/en/stable/) and
+`pip install pyrtlsdr`.
+
+All functions in librtlsdr are accessible via librtlsdr.py and a Pythonic interface is available in rtlsdr.py (recommended).
+Some documentation can be found in docstrings in the latter file.
+
+## Examples
+
+### Simple way to read and print some samples:
+
+```python
+from rtlsdr import RtlSdr
+
+sdr = RtlSdr()
+
+# configure device
+sdr.sample_rate = 2.048e6 # Hz
+sdr.center_freq = 70e6 # Hz
+sdr.freq_correction = 60 # PPM
+sdr.gain = 'auto'
+
+print(sdr.read_samples(512))
+```
+
+### Plotting the PSD with matplotlib:
+
+```python
+from pylab import *
+from rtlsdr import *
+
+sdr = RtlSdr()
+
+# configure device
+sdr.sample_rate = 2.4e6
+sdr.center_freq = 95e6
+sdr.gain = 4
+
+samples = sdr.read_samples(256*1024)
+sdr.close()
+
+# use matplotlib to estimate and plot the PSD
+psd(samples, NFFT=1024, Fs=sdr.sample_rate/1e6, Fc=sdr.center_freq/1e6)
+xlabel('Frequency (MHz)')
+ylabel('Relative power (dB)')
+
+show()
+```
+
+### Resulting Plot:
+![](https://i.imgur.com/hFhg8.png "Resulting Plot")
+
+See the files 'demo_waterfall.py' and 'test.py' for more examples.
+
+## Handling multiple devices:
+*(added in v2.5.6)*
+```python
+from rtlsdr import RtlSdr
+
+# Get a list of detected device serial numbers (str)
+serial_numbers = RtlSdr.get_device_serial_addresses()
+
+# Find the device index for a given serial number
+device_index = RtlSdr.get_device_index_by_serial('00000001')
+
+sdr = RtlSdr(device_index)
+
+
+# Or pass the serial number directly:
+sdr = RtlSdr(serial_number='00000001')
+```
+
+### Note
+Most devices by default have the same serial number: '0000001'. This can be set
+to a custom value by using the [rtl_eeprom][rtl_eeprom] utility packaged with `librtlsdr`.
+
+[rtl_eeprom]: https://manpages.ubuntu.com/manpages/trusty/man1/rtl_eeprom.1.html
+
+# Experimental features
+
+Two new submodules are available for testing: **rtlsdraio**, which adds native Python 3 asynchronous support (asyncio module), and **rtlsdrtcp** which adds a TCP server/client for accessing a device over the network. See the respective modules in the rtlsdr folder for more details and feel free to test and report any bugs!
+
+## rtlsdraio
+Note that the rtlsdraio module is automatically imported and adds `stream()` and `stop()` methods to the normal `RtlSdr` class. It also requires the new `async`/`await` syntax introduced in Python 3.5+.
+
+The syntax is basically:
+
+```python
+import asyncio
+from rtlsdr import RtlSdr
+
+async def streaming():
+ sdr = RtlSdr()
+
+ async for samples in sdr.stream():
+ # do something with samples
+ # ...
+
+ # to stop streaming:
+ await sdr.stop()
+
+ # done
+ sdr.close()
+
+loop = asyncio.get_event_loop()
+loop.run_until_complete(streaming())
+```
+
+## rtlsdrtcp
+The `RtlSdrTcpServer` class is meant to be connected physically to an SDR dongle and communicate with an instance of `RtlSdrTcpClient`. The client is intended to function as closely as possible to the base RtlSdr class (as if it had a physical dongle attached to it).
+
+Both of these classes have the same arguments as the base `RtlSdr` class with the addition of `hostname` and `port`:
+```python
+server = RtlSdrTcpServer(hostname='192.168.1.100', port=12345)
+server.run_forever()
+# Will listen for clients until Ctrl-C is pressed
+```
+```python
+# On another machine (typically)
+client = RtlSdrTcpClient(hostname='192.168.1.100', port=12345)
+client.center_freq = 2e6
+data = client.read_samples()
+```
+
+## TCP Client Mode
+On platforms where the `librtlsdr` library cannot be installed/compiled, it is possible to import the `RtlSdrTcpClient` only by setting the environment variable `"RTLSDR_CLIENT_MODE"` to `"true"`. If this is set, no other modules will be available.
+
+*Feature added in v0.2.4*
+
+
+# Dependencies
+
+* Windows/Linux/OSX
+* Python 2.7.x/3.3+
+* [librtlsdr](https://github.com/librtlsdr/librtlsdr/releases)
+* **Optional**: NumPy (wraps samples in a more convenient form)
+
+matplotlib is also useful for plotting data. The librtlsdr binaries (rtlsdr.dll in Windows and librtlsdr.so in Linux)
+should be in the pyrtlsdr directory, or a system path. Note that these binaries may have additional dependencies.
+
+# Todo
+
+There are a few remaining functions in librtlsdr that haven't been wrapped yet. It's a simple process if there's an additional
+function you need to add support for, and please send a pull request if you'd like to share your changes.
+
+# Troubleshooting
+
+* Some operating systems (Linux, OS X) seem to result in libusb buffer issues when performing small reads. Try reading 1024
+(or higher powers of two) samples at a time if you have problems.
+
+* If you're having librtlsdr import errors:
+ * **Windows**: Make sure all the librtlsdr DLL files (librtlsdr.dll, libusb-1.0.dll) are in your system path, or the same folder
+as this README file. Also make sure you have all of *their* dependencies (e.g. libgcc_s_dw2-1.dll or possibly the Visual Studio runtime files). If rtl_sdr.exe
+works, then you should be okay. Also note that you can't mix the 64 bit version of Python with 32 bit builds of librtlsdr, and vice versa.
+ * **Linux**: Make sure your LD_LIBRARY_PATH environment variable contains the directory where the librtlsdr.so.0 library is located. You can do this in a shell with (for example): `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib`. See [this issue](https://github.com/roger-/pyrtlsdr/issues/7) for more details.
+
+# License
+
+All of the code contained here is licensed by the GNU General Public License v3.
+
+# Credit
+
+Credit to dbasden for his earlier wrapper [python-librtlsdr](https://github.com/dbasden/python-librtlsdr) and all the
+contributors on GitHub.
+
+Copyright (C) 2013 by Roger <https://github.com/pyrtlsdr/pyrtlsdr>
+
+
+%prep
+%autosetup -n pyrtlsdr-0.2.93
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-pyrtlsdr -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu Mar 09 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.93-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..29c3844
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+c4700d4aeaaaef968b1770e073046fea pyrtlsdr-0.2.93.tar.gz