# Resources and notes
- GH list of Self Hosted Runners:
- From the [org profile](https://github.com/esp-rs) > Settings > Actions > Runners > Standard GitHub-hosted runners
- You need to be admin in the organization to see this list
- [List of runners](https://gitlab.espressif.cn:6688/idf/runner-hosts/-/blob/master/BR.hosts)
- [CI & Services Wiki](https://espressif.gitlab-pages.espressif.cn:6688/ci-services-wiki)
- [VM runners Brno](https://espressif.gitlab-pages.espressif.cn:6688/ci-services-wiki/#/ci-infra/runners/vm-runners-brno)
- [How to hardcode USB device links](https://espressif.gitlab-pages.espressif.cn:6688/ci-services-wiki/#/ci-infra/runners/vm-runners-brno?id=create-fixed-usb-devices-links)
- You may request SSH access to the VMs to Tomas Sebestik
- If you need to reload attached devices on VM runner (because a devkit is not being detected): `ssh brno.beeswarmGH ctlvm reload -m BrnoVMRS07`
- If getting a permision error: `sudo ssh brno.beeswarmGH ctlvm reload -m BrnoVMRS07`
- See https://espressif.gitlab-pages.espressif.cn:6688/ci-services-wiki/#/ci-infra/runners/vm-runners-brno?id=usage-of-helper-script
- Github actions runs workflows under the `espressif` user of the VMs.
- If anything needs to be installed for that user, just ssh into the machine with your user and the swich to it: `sudo su espressif`
# HIL Testing Runners
## espflash HIL
- BrnoVMRS01 `self-hosted` `Linux` `X64` **`esp32`** `vm-runner`
- `/dev/ttyUSB0` aliased to `/dev/serial_ports/esp32`
- BrnoVMRS02 `self-hosted` `Linux` `X64` **`esp32s2`** `vm-runner`
- `/dev/ttyUSB0` aliased to `/dev/serial_ports/esp32s2`
- BrnoVMRS03 `self-hosted` `Linux` `X64` **`esp32c3`** `vm-runner`
- `/dev/ttyACM0` aliased to `/dev/serial_ports/esp32c3`
- BrnoVMRS04 `self-hosted` `Linux` `X64` **`esp32s3`** `vm-runner`
- `/dev/ttyUSB0` aliased to `/dev/serial_ports/esp32s3`
- BrnoVMRS05 `self-hosted` `Linux` `X64` **`esp32h2`** `vm-runner`
- `/dev/ttyUSB0` aliased to `/dev/serial_ports/esp32h2`
- BrnoVMRS06 `self-hosted` `Linux` `X64` **`esp32c6`** `vm-runner`
- `/dev/ttyUSB0` aliased to `/dev/serial_ports/esp32c6`
- BrnoVMR07 `self-hosted` `Linux` `X64` **`esp32c2-26mhz`** `vm-runner`
- `/dev/ttyUSB0` aliased to `/dev/serial_ports/esp32c2`
## esp-hal HIL
- BrnoRPIRS01 `self-hosted` `Linux` `ARM` **`esp32c6-usb`**
- BrnoRPIRS02 `self-hosted` `Linux` `ARM` **`esp32s3-usb`**
- BrnoRPIRS03 `self-hosted` `Linux` `ARM` **`esp32c3-usb`** **`rustboard`**
- BrnoRPIRS04 `self-hosted` `Linux` `ARM` **`esp32h2-usb`**
- BrnoRPIRS05 `self-hosted` `Linux` `ARM` **`esp32s2-jtag`**
- BrnoRPIRS06 `self-hosted` `Linux` `ARM64` **`esp32-jtag`**
- BrnoRPIRS07 `self-hosted` `Linux` `ARM64` **`esp32c2-jtag`**
- BrnoRPIRS09 `self-hosted` `Linux` `ARM64` **`esp32p4`**
- BrnoRPIRS10 `self-hosted` `Linux` `ARM64` **`esp32c5-usb`**
- BrnoRPIRS11 `self-hosted` `Linux` `ARM64` **`esp32c61-usb`**
The ones tagget with `ARM64` are Rpi5 while the rest is Rpi4
## Xtensa Rust builders
- linux-x86_64-self-hosted `self-hosted` `Linux` `X64` `linux-x86_64-self-hosted`
- BRNOWIN004 `self-hosted` `X64` `Windows`
- Used to build `x86_64-pc-windows-msvc` and `x86_64-pc-windows-gnu`
- BrnoMAC0002 `self-hosted` `macOS` `ARM64` `macos-m1-self-hosted`
- Used to build `aarch64-apple-darwin`
# Troubleshooting
### `x86_64-pc-windows-gnu` permission issue
The `Building LLVM for x86_64-pc-windows-gnu` step fails with:
```
[2618/3163] Linking CXX static library lib\libLLVMWebAssemblyDisassembler.a
FAILED: lib/libLLVMWebAssemblyDisassembler.a
C:\Windows\system32\cmd.exe /C "cd . && C:\msys64\mingw64\bin\cmake.exe -E rm -f lib\libLLVMWebAssemblyDisassembler.a && C:\msys64\mingw64\bin\ar.exe qc lib\libLLVMWebAssemblyDisassembler.a lib/Target/WebAssembly/Disassembler/CMakeFiles/LLVMWebAssemblyDisassembler.dir/WebAssemblyDisassembler.cpp.obj && C:\msys64\mingw64\bin\ranlib.exe lib\libLLVMWebAssemblyDisassembler.a && cd ."
C:\msys64\mingw64\bin\ranlib.exe: could not create temporary file whilst writing archive: Permission denied
[2619/3163] Linking CXX static library lib\libLLVMWebAssemblyAsmParser.a
[2620/3163] Linking CXX static library lib\libLLVMXtensaDisassembler.a
[2621/3163] Linking CXX static library lib\libLLVMXtensaDesc.a
[2622/3163] Linking CXX static library lib\libLLVMX86Desc.a
[2623/3163] Building CXX object lib/TextAPI/CMakeFiles/LLVMTextAPI.dir/TextStubV5.cpp.obj
[2624/3163] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/StandardInstrumentations.cpp.obj
[2625/3163] Building CXX object lib/TextAPI/CMakeFiles/LLVMTextAPI.dir/TextStub.cpp.obj
[2626/3163] Building CXX object lib/ToolDrivers/llvm-lib/CMakeFiles/LLVMLibDriver.dir/LibDriver.cpp.obj
[2627/3163] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilderPipelines.cpp.obj
[2628/3163] Building CXX object lib/Target/X86/CMakeFiles/LLVMX86CodeGen.dir/X86ISelLowering.cpp.obj
[2629/3163] Building CXX object lib/Passes/CMakeFiles/LLVMPasses.dir/PassBuilder.cpp.obj
ninja: build stopped: subcommand failed.
thread 'main' panicked at C:\Windows\ServiceProfiles\NetworkService\.cargo\registry\src\index.crates.io-6f17d22bba15001f\cmake-0.1.48\src\lib.rs:975:5:
command did not execute successfully, got: exit code: 1
build script failed, must exit now
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
finished in 2290.054 seconds
Build completed unsuccessfully in 0:43:10
```
1. ssh into `BrnoWIN004`: `ssh tunnel.BrnoWIN004`
- Leave the ssh sesion open
2. Connect to it with Microsoft Remote Desktop
- Address: `localhost:7777`
- User: `admin`
- Pass: `Espressif32`
- The next steps are executed on the Windows machine
3. Open services: Search > Services
4. Open the `GitHub Action Runner (esp-rs.BNRONWIN004)` service
1. Stop the service: General tab > Stop
2. Update user: Log On tab > Browse > Enter `admin` > Check names > OK
- After checking names, the field should be updated to `BRNOWIN004\admin`
3. Add password (see previous step)
4. Apply and OK
5. Start the service again
5. If there are some intermediary build artifacts, you may need to delete the `C:\actions-runnner\_work\rust-build\` folder
1. Select the folder with Shift+Click
2. Press the folder icon on the top bar
6. Close the remote sesion and the ssh session
# Errors
## espflash
- [ESP32 and ESP32-S2 failed with different causes](https://github.com/esp-rs/espflash/actions/runs/8591795628/attempts/1)
- ESP32 issues resolved after reloading the USBs of the VM (`ssh brno.beeswarmGH ctlvm reload -m BrnoVMRS01`)
- ESP32-S2 issues resolved after rebooting the VM.
## esp-hal