# Sinara 9805 RF Power Amplifier "Booster" * [Firmware](https://github.com/quartiq/booster) * [Documentation](https://quartiq.de/booster/) * [Wiki](https://github.com/sinara-hw/Booster/wiki) ## Firmware ### Flashing #### Easier way Download and unpack the [booster firmware](../extra/booster/booster0.5.0.tar.xz), and then: ```shell 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: ```shell 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 ```shell git clone git@github.com:quartiq/booster.git cd booster git checkout f7d89f4d9d7760e8bc73ec13f17212512b60af15 # 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 1. `nix-shell -p cutecom mosquitto appimage-run` 2. Create mosquitto config `mosquitto.conf` with your bound address: ``` bind_address 192.168.1.123 allow_anonymous true ``` 3. `mosquitto -c mosquitto.conf -d` 4. Run `cutecom` 5. Connect to the Booster via `/dev/ttyACMX` port, baud 9600, switch from LF to CR on newer version 6. Send `help` command to check if it works 7. Enter commands (change details if necessary): ```shell 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 ``` Newer version: ```shell write broker "192.168.1.123" write ip "192.168.1.75" # apply changes and wait until it fully rebooted reset ``` 8. Check the Booster connects to your broker. 9. Download AppImage from [MQTT Explorer](https://mqtt-explorer.com/) 10. Run it with `appimage-run /path/to/MQTT-Explorer-XXX.AppImage` 11. Connect to your MQTT broker 12. Restart booster to receive settings ## Calibration 1. Assemble Kasli with one Urukul, build and flash firmware for it with [booster.json](../extra/booster.json) 2. Run [dds_for_booster.py](../extra/dds_for_booster.py) experiment once 3. Attach parallel 50 Ohm load to the oscilloscope, as shown on the picture: ![](../img/50ohm_parallel_load.jpg), 4. Configure oscilloscope for 1M Ohm impedance 5. Attach attenuator to the Urukul's RF2 6. `cd py/` 7. You may also need to download or install python's `gmqtt` and `miniconf`: ```shell python -m venv env source env/bin/activate.fish pip install git+https://github.com/quartiq/miniconf#subdirectory=py/miniconf-mqtt ``` 8. 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` 9. Using [booster_template](../extra/booster_template.ods) fill in `y0`, `y1`, `m`, `c`, values using instructions below 10. Update settings with the adjusted values 11. Save settings with `python -m booster --broker 192.168.1.123 --prefix dt/sinara/booster/xx-xx-xx-xx-xx-xx --channel N save` 12. Reboot and check settings are applied ### Input power 1. Connect Urukul's output (see booster template for exact ports) to the oscilloscope with load 2. Measure it's RMS, convert to dBm, put it to the measured cell 3. Connect Urukul's output to the Booster's input 4. Get the input value from telemetry (see booster template for exact path) 5. Do steps 1-4 for second Urukul's output 6. Fill in `slope` and `offset` from settings 7. 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 1. Connect Urukul's output (see booster template for exact ports) to the Booster's input 2. Connect Booster's output to the oscilloscope with load 3. Raise channel's `output_interlock_threshold` to 40 4. Turn channel's state to `Enabled` 5. Measure it's RMS, convert to dBm, put it to the measured cell 6. Get the output value from telemetry (see booster template for exact path) 7. Disconnect the Booster's output 8. Get the reflected value from telemetry 9. Do steps 1-6 for second Urukul's output 10. Fill in `slope` and `offset` from settings for output and reflected curves 11. Set channel's `output_interlock_threshold` to 0 12. Turn channel's state to `Off` 13. 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._