Skip to content

Fix Pi 5 driver selection crash when only libgpiod.so.3 is installed#2490

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/fix-inconsistent-behavior-pi5
Draft

Fix Pi 5 driver selection crash when only libgpiod.so.3 is installed#2490
Copilot wants to merge 2 commits intomainfrom
copilot/fix-inconsistent-behavior-pi5

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 2, 2026

The RaspberryPi5 case in GetBestDriverForBoardOnLinux() hardcodes LibGpiodDriver.GetAvailableChips() (V1 ABI, requires libgpiod.so.2), which crashes on recent Pi OS images that only ship libgpiod.so.3. Meanwhile, unmapped Pi 5 revisions fall through to UnixDriver.Create() which handles this gracefully — so rev 1.0 crashes but rev 1.1 works.

Changes

  • GpioController.cs: Pi 5 case now tries LibGpiodDriver (V1) first, then falls back to LibGpiodV2Driver (V2 ABI) if V1 throws DllNotFoundException, matching the try/catch pattern already used by GpioDriver.TryCreate() and UnixDriver.Create()
  • RaspberryBoardInfo.cs: Added firmware code 0x4171 (Pi 5 rev 1.1) to the RaspberryPi5 mapping so it gets proper Pi 5 driver selection instead of falling through to Unknown
// Before: crashes if libgpiod.so.2 is missing
var chips = LibGpiodDriver.GetAvailableChips();

// After: tries V1, falls back to V2
try
{
    selectedChip = LibGpiodDriver.GetAvailableChips().FirstOrDefault(x => x.NumLines == 54);
}
catch (Exception ex) when (ex is DllNotFoundException or PlatformNotSupportedException)
{
}

if (selectedChip is null)
{
    selectedChip = LibGpiodV2Driver.GetAvailableChips().FirstOrDefault(x => x.NumLines == 54);
    useV2 = true;
}

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 1oavsblobprodcus350.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/devices/Common/Common.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • 1s1vsblobprodcus386.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/DevicesApiTester/DeviceApiTester.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/System.Device.Gpio/System.Device.Gpio.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • 2kmvsblobprodcus39.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/samples/samples.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • 37cvsblobprodcus359.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • 4m6vsblobprodcus384.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • 4vyvsblobprodcus361.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/samples/samples.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/System.Device.Gpio/System.Device.Gpio.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • 6s7vsblobprodcus313.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • 80zvsblobprodcus35.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/samples/samples.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/DevicesApiTester/DeviceApiTester.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • bcnvsblobprodcus378.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/devices/BuildHat/BuildHat.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • fdpvsblobprodcus345.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/devices/Ft232H/Ft232H.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/devices/Ags01db/Ags01db.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • gbsvsblobprodcus365.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • gervsblobprodcus329.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/DevicesApiTester/DeviceApiTester.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • h6tvsblobprodcus346.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/devices/RGBLedMatrix/RGBLedMatrix.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true ng/emptyFakeDotnetRoot ing/emptyFakeDotnetRoot (dns block)
  • ibzvsblobprodcus369.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/samples/samples.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • josvsblobprodcus372.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • l49vsblobprodcus358.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • o3svsblobprodcus318.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/samples/samples.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/System.Device.Gpio/System.Device.Gpio.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • ofvvsblobprodcus315.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/DevicesApiTester/DeviceApiTester.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/System.Device.Gpio/System.Device.Gpio.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • p2ovsblobprodcus312.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • pkvvsblobprodcus321.vsblob.vsassets.io
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/samples/samples.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/src/System.Device.Gpio/System.Device.Gpio.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • s4uvsblobprodcus326.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/samples/samples.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
    • Triggering command: /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /home/REDACTED/work/iot/iot/tools/ArduinoCsCompiler/ArduinoCsCompiler.sln --packages /tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/packages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal /p:TargetFrameworkRootPath=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:NetCoreTargetingPackRoot=/tmp/codeql-scratch-db3f4ba25dde505c/dbs/csharp/working/emptyFakeDotnetRoot /p:AllowMissingPrunePackageData=true (dns block)
  • sc4vsblobprodcus331.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • securitytools.pkgs.visualstudio.com
    • Triggering command: /opt/hostedtoolcache/CodeQL/2.24.3/x64/codeql/csharp/tools/linux64/Semmle.Autobuild.CSharp /opt/hostedtoolcache/CodeQL/2.24.3/x64/codeql/csharp/tools/linux64/Semmle.Autobuild.CSharp (dns block)
  • tphvsblobprodcus375.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)
  • yluvsblobprodcus367.vsblob.vsassets.io
    • Triggering command: /home/REDACTED/work/iot/iot/.dotnet/dotnet /home/REDACTED/work/iot/iot/.dotnet/dotnet build src/System.Device.Gpio/System.Device.Gpio.csproj (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

…so.3 is installed

- Add Pi 5 rev 1.1 firmware code (0x4171) to board model mapping
- Fix Pi 5 driver selection to try LibGpiodDriver (V1/libgpiod.so.2) first,
  then fall back to LibGpiodV2Driver (V2/libgpiod.so.3), matching the
  graceful fallback pattern used elsewhere in the codebase

Agent-Logs-Url: https://github.com/dotnet/iot/sessions/a5e2c635-cb09-4a00-a38e-62450f138d7a

Co-authored-by: krwq <660048+krwq@users.noreply.github.com>
@dotnet-policy-service dotnet-policy-service bot added the area-System.Device.Gpio Contains types for using general-purpose I/O (GPIO) pins label Apr 2, 2026
Copilot AI changed the title [WIP] Fix inconsistent behavior for Pi 5 rev 1.0 and 1.1 Fix Pi 5 driver selection crash when only libgpiod.so.3 is installed Apr 2, 2026
Copilot AI requested a review from krwq April 2, 2026 16:29
Copilot finished work on behalf of krwq April 2, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-System.Device.Gpio Contains types for using general-purpose I/O (GPIO) pins

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Inconsistent behavior for Pi 5 rev 1.0 vs 1.1 when only libgpiod.so.3[.x.x] is installed

2 participants