diff --git a/fbt.cmd b/fbt.cmd index 078cc69a0..f83cdf14e 100644 --- a/fbt.cmd +++ b/fbt.cmd @@ -1,5 +1,5 @@ @echo off -call "%~dp0scripts\toolchain\fbtenv.cmd" env +call "%~dp0scripts\toolchain\fbtenv.cmd" env || exit /b set SCONS_EP=python -m SCons diff --git a/scripts/debug/41-udev.rules b/scripts/debug/41-flipper.rules similarity index 72% rename from scripts/debug/41-udev.rules rename to scripts/debug/41-flipper.rules index 6b4b37b92..8663e99ab 100644 --- a/scripts/debug/41-udev.rules +++ b/scripts/debug/41-flipper.rules @@ -1,10 +1,17 @@ -#Flipper Zero serial port +# Flipper Zero serial port SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", ATTRS{manufacturer}=="Flipper Devices Inc.", TAG+="uaccess", GROUP="dialout" -#Flipper Zero DFU + +# Flipper Zero DFU SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", ATTRS{manufacturer}=="STMicroelectronics", TAG+="uaccess", GROUP="dialout" -#Flipper ESP32s2 BlackMagic + +# Flipper ESP32s2 BlackMagic SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="40??", ATTRS{manufacturer}=="Flipper Devices Inc.", TAG+="uaccess", GROUP="dialout" -#Flipper U2F + +# Flipper ESP32s2 in DAP mode +SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="40??", ATTRS{manufacturer}=="CMSIS-DAP", TAG+="uaccess", GROUP="dialout" + +# Flipper U2F SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5741", ATTRS{manufacturer}=="Flipper Devices Inc.", ENV{ID_SECURITY_TOKEN}="1" -#ST-Link-V3 + +# ST-Link-V3 SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="37??", ATTRS{manufacturer}=="STMicroelectronics", TAG+="uaccess", GROUP="dialout" diff --git a/scripts/debug/README.md b/scripts/debug/README.md new file mode 100644 index 000000000..59f2bf0c1 --- /dev/null +++ b/scripts/debug/README.md @@ -0,0 +1,19 @@ +## Installing udev rules + +On Linux, unprivileged users need to be in the `dialout` group to access serial ports and other USB devices. + +To add your user to the `dialout` group, run the following command: + +```bash +sudo usermod -a -G dialout $USER +``` + +To install the udev rules needed for debugging & CLI access to Flipper, run the following command: + +```bash +sudo cp 41-flipper.rules /etc/udev/rules.d/ +sudo udevadm control --reload-rules +sudo udevadm trigger +``` + +Note that not all possible debug interfaces are listed the `41-flipper.rules` file. If your interface is not supported out of the box, you may need to add a a rule for it. You can do so by adding a new line to the file according to udev rules syntax. Use `lsusb -v` to find the vendor and product IDs of your device. \ No newline at end of file diff --git a/scripts/toolchain/fbtenv.cmd b/scripts/toolchain/fbtenv.cmd index 446f04aa7..893493313 100644 --- a/scripts/toolchain/fbtenv.cmd +++ b/scripts/toolchain/fbtenv.cmd @@ -13,7 +13,7 @@ if not ["%FBT_NOENV%"] == [""] ( exit /b 0 ) -set "FLIPPER_TOOLCHAIN_VERSION=28" +set "FLIPPER_TOOLCHAIN_VERSION=31" if ["%FBT_TOOLCHAIN_PATH%"] == [""] ( set "FBT_TOOLCHAIN_PATH=%FBT_ROOT%" diff --git a/scripts/toolchain/fbtenv.sh b/scripts/toolchain/fbtenv.sh index ef7549c87..4d6f9001b 100755 --- a/scripts/toolchain/fbtenv.sh +++ b/scripts/toolchain/fbtenv.sh @@ -4,7 +4,7 @@ # public variables DEFAULT_SCRIPT_PATH="$(pwd -P)"; -FBT_TOOLCHAIN_VERSION="${FBT_TOOLCHAIN_VERSION:-"28"}"; +FBT_TOOLCHAIN_VERSION="${FBT_TOOLCHAIN_VERSION:-"31"}"; if [ -z ${FBT_TOOLCHAIN_PATH+x} ] ; then FBT_TOOLCHAIN_PATH_WAS_SET=0; @@ -208,7 +208,9 @@ fbtenv_show_unpack_percentage() fbtenv_unpack_toolchain() { echo "Unpacking toolchain to '$FBT_TOOLCHAIN_PATH/toolchain':"; - rm $FBT_TOOLCHAIN_PATH/toolchain/current || true; + if [ -L "$FBT_TOOLCHAIN_PATH/toolchain/current" ]; then + rm "$FBT_TOOLCHAIN_PATH/toolchain/current"; + fi tar -xvf "$FBT_TOOLCHAIN_PATH/toolchain/$TOOLCHAIN_TAR" -C "$FBT_TOOLCHAIN_PATH/toolchain" 2>&1 | fbtenv_show_unpack_percentage; mkdir -p "$FBT_TOOLCHAIN_PATH/toolchain" || return 1; mv "$FBT_TOOLCHAIN_PATH/toolchain/$TOOLCHAIN_DIR" "$TOOLCHAIN_ARCH_DIR" || return 1; diff --git a/scripts/toolchain/windows-toolchain-download.ps1 b/scripts/toolchain/windows-toolchain-download.ps1 index 11d8a564d..025f8341f 100644 --- a/scripts/toolchain/windows-toolchain-download.ps1 +++ b/scripts/toolchain/windows-toolchain-download.ps1 @@ -13,19 +13,21 @@ $toolchain_zip = "$toolchain_dist_folder-$toolchain_version.zip" $toolchain_zip_temp_path = "$download_dir\$toolchain_zip" $toolchain_dist_temp_path = "$download_dir\$toolchain_dist_folder" +try { + if (Test-Path -LiteralPath "$toolchain_target_path") { Write-Host -NoNewline "Removing old Windows toolchain.." Remove-Item -LiteralPath "$toolchain_target_path" -Force -Recurse Write-Host "done!" } -if (Test-path -Path "$toolchain_target_path\..\current") { +if (Test-path -LiteralPath "$toolchain_target_path\..\current") { Write-Host -NoNewline "Unlinking 'current'.." Remove-Item -LiteralPath "$toolchain_target_path\..\current" -Force Write-Host "done!" } -if (!(Test-Path -Path "$toolchain_zip_temp_path" -PathType Leaf)) { +if (!(Test-Path -LiteralPath "$toolchain_zip_temp_path" -PathType Leaf)) { Write-Host -NoNewline "Downloading Windows toolchain.." $wc = New-Object net.webclient $wc.Downloadfile("$toolchain_url", "$toolchain_zip_temp_path") @@ -57,4 +59,10 @@ Write-Host -NoNewline "Cleaning up temporary files.." Remove-Item -LiteralPath "$toolchain_zip_temp_path" -Force Write-Host "done!" -# dasdasd +} catch { + Write-Host "An error occurred" + Write-Host $_ + Write-Host "Please close VSCode and any other programs that may be using the toolchain and try again." + $host.SetShouldExit(1) + Exit 1 +}