OneXPlayer F1 Pro — USB4 でのMIDIその他の不具合の解消方法

OneXPlayerのF1 Proという機種を開発用に使用しているのですが、MIDIデバイスが検出されないという問題があり、嵌まってしまいました。原因はUSBコントローラー周りで、デバイス番号が一致していないというものでした。かなり荒技な対応方法ですが、発売から1年以上経っているこの機種のドライバをメーカーがアップデートするというのは期待薄ですので、やむを得ないかと思います。一部セキュリティを弱めていますので、何がリスクかをわかる方のみ使用してください。

OneXPlayer F1 Pro — USB4 MIDI Fix Manual (Post-OS-Reinstall)

Background

The F1 Pro (AMD Ryzen AI 9 HX 370, Strix Point) has two USB4 host routers with hardware IDs PCI_1022&DEV_151C and PCI_1022&DEV_151D.

AMD’s published USB4 Connection Manager driver (amdusb4cm.inf, chipset package version 8.05.04.516 as of 2026-07) does not list these IDs — it only supports 162E, 162F, 1668, 1669, 15C4, 15C5. Because of this, Windows falls back to its generic inbox USB4 class driver, which fails to correctly enumerate class-compliant legacy USB devices tunneled through USB4 (e.g. a Kawai MP11SE USB-MIDI keyboard — shows nothing in Device Manager when plugged into either type-C port).

The following is an experimental, manual workaround for the driver package examined here; future official driver support is not established: patch AMD’s own driver INF to add the missing hardware IDs, then self-sign it so Windows will load it.

Before wiping/reinstalling Windows, back up this entire folder from your current install if it still exists:

C:_USB4_CM_modified 

That folder already contains the patched, signed driver (amdusb4cm.inf, .sys, and the resigned .cat). If you have it backed up, skip straight to Part 3. If you don’t have it (fresh AMD driver download instead), start from Part 1.

Part 1 — Get the AMD chipset driver and locate the USB4 CM component
- Download AMD Ryzen™ and Athlon™ Mobile (Chipset) driver from: https://www.amd.com/en/support/downloads/drivers.html/chipsets/laptop-chipsets/amd-ryzen-and-athlon-mobile-chipset.html (select Ryzen AI 300 series / HX 370 compatibility) - Run the installer. It extracts to C:_Software… before showing the component picker. Do not close the installer window until you’ve grabbed the files below (or just let it finish; the extracted files remain on disk regardless). - Copy the USB4 CM driver folder to a working location: C:_Software4CM4CM_Driver_USB4_CM  - → copy to C:_USB4_CM_modified
It should contain: amdusb4cm.inf, amdusb4cm.sys, amdusb4cm.cat, Readme.txt, ReleaseNotes.txt. - Verify your actual hardware IDs first — don’t assume they’re still 151C/151D on a different unit/BIOS revision: Settings → Bluetooth & devices → USB → USB4 Hubs and devices - Look for Device instance ID: PCI_1022&DEV_XXXX… for both routers.

Part 2 — Patch the INF

Open amdusb4cm.inf (it’s UTF-16 encoded — use PowerShell, not plain text editors that mishandle encoding) and find the [amd.NTamd64] section. Add your two device IDs, mirroring the existing line format exactly. Easiest way — run this in PowerShell (adjust 151C/151D if yours differ):

$path = ‘C:_USB4_CM_modified4cm.inf’

$lines = [System.Collections.Generic.List[string]](Get-Content -Path $path -Encoding Unicode)

$idx = -1

for ($i=0; $i -lt $lines.Count; $i++) { if ($lines[$i] -match ‘DEV_15C5’) { $idx = $i; break } }

$id1 = lines[lines[idx] -replace ’15C5′,’151C’

$id2 = lines[lines[idx] -replace ’15C5′,’151D’

lines.Insert(lines.Insert(idx+1, $id2)

lines.Insert(lines.Insert(idx+1, $id1)

[System.IO.File]::WriteAllLines($path, $lines, [System.Text.Encoding]::Unicode)

Get-Content -Path $path -Encoding Unicode | Select-String ‘DEV_15’

Confirm the output shows your two new IDs listed alongside the originals.

Part 3 — Create a test-signing certificate (skip if reusing an old cert/export)

$cert = New-SelfSignedCertificate -Type CodeSigningCert `

-Subject ‘CN=AMD USB4CM Local Test Cert’ -KeyUsage DigitalSignature `

-FriendlyName ‘AMD USB4CM Local Test Cert’ `

-CertStoreLocation ‘Cert:’ -NotAfter (Get-Date).AddYears(10)

$cert | Export-Certificate -FilePath ‘C:_test_cert.cer’

Install it into the machine’s trust stores (must run as Administrator):

Import-Certificate -FilePath ‘C:_test_cert.cer’ -CertStoreLocation ‘Cert:’

Import-Certificate -FilePath ‘C:_test_cert.cer’ -CertStoreLocation ‘Cert:’

If you kept the original .cer and the private key is still in your CurrentUsercert store (i.e. you didn’t reinstall Windows since generating it), you can skip cert generation and just re-import the .cer into Root + TrustedPublisher on the new install. If the private key is gone (fresh OS), generate a new certificate — the old signed .cat won’t verify against a new cert, so redo Part 4 too.

Part 4 — Regenerate and sign the catalog

$folder = ‘C:_USB4_CM_modified’

Remove-Item (Join-Path $folder ‘amdusb4cm.cat’) -ErrorAction SilentlyContinue

Create the driver catalog with WDK Inf2Cat, specifying this package folder and the actual target Windows version. Do not substitute New-FileCatalog for Inf2Cat.

$cert = Get-ChildItem Cert:| Where-Object { $_.Subject -match ‘AMD USB4CM’ }

Set-AuthenticodeSignature -FilePath (Join-Path $folder ‘amdusb4cm.cat’) -Certificate $cert

Get-AuthenticodeSignature (Join-Path $folder ‘amdusb4cm.cat’) | Format-List Status,StatusMessage

Confirm Status : Valid.

Part 5 — Enable test-signing mode

bcdedit /set testsigning on

Reboot normally (a regular restart is enough — this is NOT the “Disable driver signature enforcement” F7 boot menu option; that one is temporary and not needed here). After reboot you should see a “Test Mode” watermark in the bottom-right corner of the desktop — this confirms it’s active.

Part 6 — Install and bind the driver

Stage it into the driver store (elevated PowerShell):

pnputil /add-driver ‘C:_USB4_CM_modified4cm.inf’ /install

This will likely report “Driver package is up-to-date on device” for both routers and not auto-swap them — Windows’ automatic driver ranking prefers its own inbox driver. You need to force it manually:
- Open Device Manager. - Find the first “USB4 Host Router” entry (under System devices — enable View → Show hidden devices if you don’t see it). - Right-click → Update driver → Browse my computer for drivers → Let me pick from a list of available drivers on my computer → Have Disk. - Browse to C:_USB4_CM_modified4cm.inf, select AMD USB4 Host Router, install (confirm past any warning). - Repeat for the second USB4 Host Router entry (there are two — one per port/domain).

Part 7 — Verify

Get-PnpDevice | Where-Object { $_.InstanceId -match ‘DEV_151C|DEV_151D’ } | ForEach-Object {

$.FriendlyName; $.InstanceId

(Get-PnpDeviceProperty -InstanceId $_.InstanceId -KeyName ‘DEVPKEY_Device_DriverProvider’).Data

(Get-PnpDeviceProperty -InstanceId $_.InstanceId -KeyName ‘DEVPKEY_Device_DriverVersion’).Data

‘—‘

}

Both should show DriverProvider = Advanced Micro Devices Inc., version 1.0.0.43.

Then plug in the MP11SE and check Device Manager → Sound, video and game controllers for a “USB-MIDI” entry.

Rollback (if something goes wrong / to undo entirely)

pnputil /delete-driver oem60.inf /uninstall

bcdedit /set testsigning off

Remove-Item ‘Cert:\82EBC8777E6C38E2D5D91C5D9230C5B089D0BA24’ -ErrorAction SilentlyContinue

Remove-Item ‘Cert:\82EBC8777E6C38E2D5D91C5D9230C5B089D0BA24’ -ErrorAction SilentlyContinue

(Adjust the oem##.inf name and cert thumbprint if they differ — check with pnputil /enum-drivers and Get-ChildItem Cert:first.)

Then reboot.

Known caveats
- Test-signing mode shows a permanent desktop watermark and may cause some anti-cheat/DRM software to refuse to run. - This is an unsupported, self-signed modification to an AMD driver — it works because the added hardware IDs are close relatives of already officially-supported USB4 CM silicon on the same driver version, but AMD never validated it against your exact chip revision. - If AMD ever ships an official update adding 151C/151D natively, prefer switching to that and rolling this back (see above).

署名手順についての補足

ドライバパッケージのカタログは、INFが参照するファイルと対象OSを検査して生成するWDKのInf2Cat等を使います。一般ファイルのカタログを作るNew-FileCatalogだけで、PnPドライバ用として十分なカタログになるとはいえません。Get-AuthenticodeSignatureのValidも、ドライバ適合性や読み込み成功まで保証しません。テスト署名モードはSecure Bootなどの設定によって変更を拒否される場合があります。本文のデバイスID・バージョン・効果は著者が調べた環境の記録であり、公式対応の保証ではありません。掲載コマンドの引用符は実行時にASCIIの直線的な引用符へ直してください。