forked from sinara-hw/assembly
5.3 KiB
5.3 KiB
Sinara 9805 RF Power Amplifier "Booster"
Firmware
Flashing
Easier way
Download and unpack the booster firmware, and then:
nix-shell -p dfu-util
dfu-util -a 0 -s 0x08000000:leave --download booster0.5.0.bin
Build from source on Fedora 38
Creating proper Nix shell for updated Rust is quite troublesome, so the faster way is actually to use any classic Linux distribution:
git clone https://github.com/quartiq/booster.git # download sources
sudo dnf install clang dfu-util
cd booster/
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # install Rust, we need rustup
rustup target add thumbv7em-none-eabihf
cargo install cargo-binutils
rustup component add llvm-tools-preview
cargo build --release
cargo objcopy --release -- -O binary booster.bin
# enter dfu mode by either serial terminal or
# press `DFU Bootloader` button while rebooting
dfu-util -a 0 -s 0x08000000:leave --download booster.bin
For version before September 2023 on NixOS
git clone git@github.com:quartiq/booster.git
cd booster
git checkout a1f83b63180511ecd68f88a04621624941d17a41 # or earlier
nix-shell -p rustup cargo rustc dfu-util
rustup target add thumbv7em-none-eabihf
cargo install cargo-binutils
rustup component add llvm-tools-preview
cargo build --release
cargo objcopy --release -- -O binary booster.bin
# enter dfu mode by either serial terminal or
# press `DFU Bootloader` button while rebooting
dfu-util -a 0 -s 0x08000000:leave --download booster.bin
Basic setup via USB
nix-shell -p cutecom mosquitto appimage-run
- Create mosquitto config
mosquitto.conf
with your bound address:bind_address 192.168.1.123 allow_anonymous true
mosquitto -c mosquitto.conf -d
- Run
cutecom
- Connect to the Booster via
/dev/ttyACMX
port, baud 9600, switch from LF to CR on newer version - Send
help
command to check if it works - Enter commands (change details if necessary):
Newer version:write broker-address 192.168.1.123 # only if you need static IP address write gateway 192.168.1.1 write ip-address 192.168.1.142 write netmask 255.255.255.0 # apply changes and wait until it fully rebooted reset
write broker "192.168.1.123" write ip "192.168.1.75" # apply changes and wait until it fully rebooted reset
- Check the Booster connects to your broker.
- Download AppImage from MQTT Explorer
- Run it with
appimage-run /path/to/MQTT-Explorer-XXX.AppImage
- Connect to your MQTT broker
- Restart booster to receive settings
Calibration
- Assemble Kasli with one Urukul, build and flash firmware for it with booster.json
- Run dds_for_booster.py experiment once
- Attach parallel 50 Ohm load to the oscilloscope, as shown on the picture: ,
- Configure oscilloscope for 1M Ohm impedance
- Attach attenuator to the Urukul's RF2
cd py/
- You may also need to download or install python's
gmqtt
andminiconf
:python -m venv env source env/bin/activate.fish pip install git+https://github.com/quartiq/miniconf.git@84cc9046bf504cc2d0d33b84d2f3133f2faf2248#subdirectory=py/miniconf-mqtt
- Enable channels:
python -m booster --broker 192.168.1.123 --prefix dt/sinara/booster/xx-xx-xx-xx-xx-xx --channel N tune=0.1
- Using booster_template fill in
y0
,y1
,m
,c
, values using instructions below - Update settings with the adjusted values
- Save settings with
python -m booster --broker 192.168.1.123 --prefix dt/sinara/booster/xx-xx-xx-xx-xx-xx --channel N save
- Reboot and check settings are applied
Input power
- Connect Urukul's output (see booster template for exact ports) to the oscilloscope with load
- Measure it's RMS, convert to dBm, put it to the measured cell
- Connect Urukul's output to the Booster's input
- Get the input value from telemetry (see booster template for exact path)
- Do steps 1-4 for second Urukul's output
- Fill in
slope
andoffset
from settings - Do steps 1-6 for every channel
Note: default setting and Urukul's measured values are usually the same across channels, so you can extrapolate them for all channels.
Output and reflected power
- Connect Urukul's output (see booster template for exact ports) to the Booster's input
- Connect Booster's output to the oscilloscope with load
- Raise channel's
output_interlock_threshold
to 40 - Turn channel's state to
Enabled
- Measure it's RMS, convert to dBm, put it to the measured cell
- Get the output value from telemetry (see booster template for exact path)
- Disconnect the Booster's output
- Get the reflected value from telemetry
- Do steps 1-6 for second Urukul's output
- Fill in
slope
andoffset
from settings for output and reflected curves - Set channel's
output_interlock_threshold
to 0 - Turn channel's state to
Off
- Do steps 1-10 for every channel
Note: default setting values are usually the same across channels, so you can extrapolate them for all channels.