diff --git a/.github/workflows/build_arm.yml b/.github/workflows/build_arm.yml
index 0b770f379..72ddf164b 100644
--- a/.github/workflows/build_arm.yml
+++ b/.github/workflows/build_arm.yml
@@ -67,12 +67,6 @@ jobs:
          repository: hathach/linkermap
          path: linkermap
 
-    - name: Checkout pico-sdk for rp2040
-      if: matrix.family == 'rp2040'
-      run: |
-        git clone --depth 1 -b develop https://github.com/raspberrypi/pico-sdk ~/pico-sdk
-        echo >> $GITHUB_ENV PICO_SDK_PATH=~/pico-sdk
-
     - name: Get Dependencies
       run: python3 tools/get_deps.py ${{ matrix.family }}
 
@@ -87,81 +81,3 @@ jobs:
         do
           find ${ex} -name *.map -print -quit | xargs -I % sh -c 'echo "::group::%"; linkermap -v %; echo "::endgroup::"'
         done
-
-    # Upload binaries for hardware test with self-hosted
-    - name: Prepare stm32l412nucleo Artifacts
-      if: contains(matrix.family, 'stm32l4')
-      run: find examples/ -path "*stm32l412nucleo/*.elf" -exec mv {} . \;
-
-    - name: Upload Artifacts for stm32l412nucleo
-      if: contains(matrix.family, 'stm32l4') && github.repository_owner == 'hathach'
-      uses: actions/upload-artifact@v3
-      with:
-        name: stm32l4
-        path: |
-          *.elf
-
-#  # ---------------------------------------
-#  # Hardware in the loop (HIL)
-#  # Current self-hosted instance is running on an EPYC 7232 server hosted by HiFiPhile user
-#  # - STM32L412 Nucleo with on-board jlink as ttyACM0
-#  # ---------------------------------------
-#  hw-stm32l412nucleo-test:
-#    needs: build-arm
-#    runs-on: [self-hosted, Linux, X64, hifiphile]
-#
-#    steps:
-#    - name: Clean workspace
-#      run: |
-#        echo "Cleaning up previous run"
-#        rm -rf "${{ github.workspace }}"
-#        mkdir -p "${{ github.workspace }}"
-#
-#    - name: Download stm32l4 Artifacts
-#      uses: actions/download-artifact@v3
-#      with:
-#        name: stm32l4
-#
-#    - name: Create flash.sh
-#      run: |
-#        echo > flash.sh 'echo halt > flash.jlink'
-#        echo >> flash.sh 'echo r >> flash.jlink'
-#        echo >> flash.sh 'echo loadfile $1 >> flash.jlink'
-#        echo >> flash.sh 'echo r >> flash.jlink'
-#        echo >> flash.sh 'echo go >> flash.jlink'
-#        echo >> flash.sh 'echo exit >> flash.jlink'
-#        echo >> flash.sh 'cmdout=$(JLinkExe -device stm32l412kb -if swd -JTAGConf -1,-1 -speed auto -NoGui 1 -ExitOnError 1 -CommandFile flash.jlink)'
-#        echo >> flash.sh 'if (( $? )) ; then echo $cmdout ; fi'
-#        chmod +x flash.sh
-#
-#    - name: Test cdc_dual_ports
-#      run: |
-#        ./flash.sh cdc_dual_ports.elf
-#        while (! ([ -e /dev/ttyACM1 ] && [ -e /dev/ttyACM2 ])) && [ $SECONDS -le 10 ]; do :; done
-#        test -e /dev/ttyACM1 && echo "ttyACM1 exists"
-#        test -e /dev/ttyACM2 && echo "ttyACM2 exists"
-#
-#      # Debian does not auto mount usb drive. skip this test for now
-#    - name: Test cdc_msc
-#      if: false
-#      run: |
-#        ./flash.sh cdc_msc.elf
-#        readme='/media/pi/TinyUSB MSC/README.TXT'
-#        while (! ([ -e /dev/ttyACM1 ] && [ -f "$readme" ])) && [ $SECONDS -le 10 ]; do :; done
-#        test -e /dev/ttyACM1 && echo "ttyACM1 exists"
-#        test -f "$readme" && echo "$readme exists"
-#        cat "$readme"
-#
-#    - name: Test dfu
-#      run: |
-#        ./flash.sh dfu.elf
-#        while (! (dfu-util -l | grep "Found DFU")) && [ $SECONDS -le 10 ]; do :; done
-#        dfu-util -d cafe -a 0 -U dfu0
-#        dfu-util -d cafe -a 1 -U dfu1
-#        grep "TinyUSB DFU! - Partition 0" dfu0
-#        grep "TinyUSB DFU! - Partition 1" dfu1
-#
-#    - name: Test dfu_runtime
-#      run: |
-#        ./flash.sh dfu_runtime.elf
-#        while (! (dfu-util -l | grep "Found Runtime")) && [ $SECONDS -le 10 ]; do :; done