DWC3モジュールを使用してUSB-Cポートをホストモードに切り替える

DWC3モジュールを使用してUSB-Cポートをホストモードに切り替える

USB-C/USB-Aケーブルを介してWindowsコンピュータに接続するUbuntuサーバーを実行するデバイスを使用するプロジェクトがあります。 USB-CはUbuntuデバイスに接続され、USB-AはWindowsコンピュータに接続されます。その後、PCはそのケーブルを介してUbuntuエミュレーション大容量ストレージにデータを送信します。

これを達成するには、BIOS、ACPI、またはその他の側面をどのように変更する必要がありますか?

sudo lspci -nn -d ::0c03 -v私に次のような出力を与えます。

00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21) (prog-if 30 [XHCI])
        DeviceName: Onboard - Other
        Subsystem: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:7270]
        Flags: bus master, medium devsel, latency 0, IRQ 125
        Memory at df530000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [70] Power Management version 2
        Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
        Kernel driver in use: xhci_hcd

00:14.1 USB controller [0c03]: Intel Corporation Device [8086:9d30] (rev 21) (prog-if fe [USB Device])
        DeviceName: Onboard - Other
        Subsystem: Intel Corporation Device [8086:7270]
        Flags: bus master, fast devsel, latency 0, IRQ 17
        Memory at df000000 (64-bit, non-prefetchable) [size=2M]
        Memory at df54f000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [80] Power Management version 3
        Capabilities: [90] Vendor Specific Information: Len=14 <?>
        Kernel driver in use: dwc3-pci
        Kernel modules: dwc3_pci

編集する:

g_mass_storageモジュールをカーネルと.configファイルにロードしましたCONFIG_USB_DWC3_DUAL_ROLE=y

debugfsコマンドを使用して仮想ファイルシステムをマウントしようとしましたが、次のような@telcoM結果が得られました。

mount: /sys/kernel/debug: none already mounted on /sys/fs/bpf.

これは問題になるとは思えませんが、もしかして指摘したかったです。

/sys/kernel/debug私のディレクトリを確認しましたが<hexa number>.usb。ファイルがまったく見つかりません/sys/fs/bpf

編集2:

私のACPI設定は次のとおりです。

BIOS-e820: [mem 0x00000000851cb000-0x00000000851cbfff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000008c6ea000-0x000000008ca93fff] ACPI NVS
[    0.013210] ACPI: Early table checksum verification disabled
[    0.013214] ACPI: RSDP 0x00000000000F05B0 000024 (v02 ALASKA)
[    0.013218] ACPI: XSDT 0x000000008C6EA0B0 0000DC (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.013224] ACPI: FACP 0x000000008C713958 000114 (v06 ALASKA A M I    01072009 AMI  00010013)
[    0.013230] ACPI: DSDT 0x000000008C6EA220 029734 (v02 ALASKA A M I    01072009 INTL 20160422)
[    0.013233] ACPI: FACS 0x000000008CA93F00 000040
[    0.013236] ACPI: APIC 0x000000008C713A70 000084 (v03 ALASKA A M I    01072009 AMI  00010013)
[    0.013239] ACPI: FPDT 0x000000008C713AF8 000044 (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.013242] ACPI: FIDT 0x000000008C713B40 00009C (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.013246] ACPI: MCFG 0x000000008C713BE0 00003C (v01 ALASKA A M I    01072009 MSFT 00000097)
[    0.013249] ACPI: SSDT 0x000000008C713C20 000359 (v01 SataRe SataTabl 00001000 INTL 20160422)
[    0.013252] ACPI: SSDT 0x000000008C713F80 003165 (v02 SaSsdt SaSsdt   00003000 INTL 20160422)
[    0.013256] ACPI: HPET 0x000000008C7170E8 000038 (v01 INTEL  KBL-ULT  00000001 MSFT 0000005F)
[    0.013259] ACPI: SSDT 0x000000008C717120 0011AA (v02 INTEL  Ther_Rvp 00001000 INTL 20160422)
[    0.013262] ACPI: SSDT 0x000000008C7182D0 0009B3 (v02 INTEL  xh_rvp07 00000000 INTL 20160422)
[    0.013265] ACPI: UEFI 0x000000008C718C88 000048 (v01 ALASKA A M I    00000002      01000013)
[    0.013269] ACPI: SSDT 0x000000008C718CD0 0017AE (v02 CpuRef CpuSsdt  00003000 INTL 20160422)
[    0.013272] ACPI: LPIT 0x000000008C71A480 000094 (v01 INTEL  KBL-ULT  00000000 MSFT 0000005F)
[    0.013275] ACPI: SSDT 0x000000008C71A518 000141 (v02 INTEL  HdaDsp   00000000 INTL 20160422)
[    0.013278] ACPI: SSDT 0x000000008C71A660 00029F (v02 INTEL  sensrhub 00000000 INTL 20160422)
[    0.013282] ACPI: SSDT 0x000000008C71A900 003002 (v02 INTEL  PtidDevc 00001000 INTL 20160422)
[    0.013285] ACPI: SSDT 0x000000008C71D908 000517 (v02 INTEL  TbtTypeC 00000000 INTL 20160422)
[    0.013288] ACPI: SSDT 0x000000008C71DE20 0002E9 (v02 INTEL  Wwan     00000001 INTL 20160422)
[    0.013291] ACPI: DBGP 0x000000008C71E110 000034 (v01 INTEL           00000002 MSFT 0000005F)
[    0.013294] ACPI: DBG2 0x000000008C71E148 000054 (v00 INTEL           00000002 MSFT 0000005F)
[    0.013297] ACPI: DMAR 0x000000008C71E1A0 0000B0 (v01 INTEL  EDK2     00000001 INTL 00000001)
[    0.013300] ACPI: ASF! 0x000000008C71E250 0000A0 (v32 INTEL   HCG     00000001 TFSM 000F4240)
[    0.013304] ACPI: WSMT 0x000000008C71E2F0 000028 (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.013312] ACPI: Local APIC address 0xfee00000
[    0.046794] ACPI: PM-Timer IO Port: 0x1808
[    0.046796] ACPI: Local APIC address 0xfee00000
[    0.046803] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.046804] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[    0.046805] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[    0.046806] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1])
[    0.046840] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.046841] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.046843] ACPI: IRQ0 used by override.
[    0.046844] ACPI: IRQ9 used by override.
[    0.046846] Using ACPI (MADT) for SMP configuration information
[    0.046848] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.112942] ACPI: Core revision 20190816
[    0.145825] PM: Registering ACPI NVS region [mem 0x851cb000-0x851cbfff] (4096 bytes)
[    0.145825] PM: Registering ACPI NVS region [mem 0x8c6ea000-0x8ca93fff] (3842048 bytes)
[    0.145825] ACPI: bus type PCI registered
[    0.145825] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.149423] ACPI: Added _OSI(Module Device)
[    0.149425] ACPI: Added _OSI(Processor Device)
[    0.149426] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.149428] ACPI: Added _OSI(Processor Aggregator Device)
[    0.149431] ACPI: Added _OSI(Linux-Dell-Video)
[    0.149433] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[    0.149435] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
[    0.202623] ACPI: 11 ACPI AML tables successfully acquired and loaded
[    0.211141] ACPI: Dynamic OEM Table Load:
[    0.211150] ACPI: SSDT 0xFFFF9F1A65816800 00060F (v02 PmRef  Cpu0Ist  00003000 INTL 20160422)
[    0.213026] ACPI: \_PR_.PR00: _OSC native thermal LVT Acked
[    0.214941] ACPI: Dynamic OEM Table Load:
[    0.214948] ACPI: SSDT 0xFFFF9F1A64CAEC00 0003FF (v02 PmRef  Cpu0Cst  00003001 INTL 20160422)
[    0.216719] ACPI: Dynamic OEM Table Load:
[    0.216725] ACPI: SSDT 0xFFFF9F1A64C78480 0000BA (v02 PmRef  Cpu0Hwp  00003000 INTL 20160422)
[    0.218405] ACPI: Dynamic OEM Table Load:
[    0.218411] ACPI: SSDT 0xFFFF9F1A64EAC800 000628 (v02 PmRef  HwpLvt   00003000 INTL 20160422)
[    0.220598] ACPI: Dynamic OEM Table Load:
[    0.220607] ACPI: SSDT 0xFFFF9F1A6532B000 000D14 (v02 PmRef  ApIst    00003000 INTL 20160422)
[    0.223342] ACPI: Dynamic OEM Table Load:
[    0.223349] ACPI: SSDT 0xFFFF9F1A64CAD400 000317 (v02 PmRef  ApHwp    00003000 INTL 20160422)
[    0.225173] ACPI: Dynamic OEM Table Load:
[    0.225180] ACPI: SSDT 0xFFFF9F1A64CAF800 00030A (v02 PmRef  ApCst    00003000 INTL 20160422)
[    0.230370] ACPI: Interpreter enabled
[    0.230422] ACPI: (supports S0 S3 S4 S5)
[    0.230425] ACPI: Using IOAPIC for interrupt routing
[    0.230476] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.231867] ACPI: Enabled 6 GPEs in block 00 to 7F
[    0.241288] ACPI: Power Resource [WRST] (on)
[    0.263566] ACPI: Power Resource [FN00] (off)
[    0.263696] ACPI: Power Resource [FN01] (off)
[    0.263828] ACPI: Power Resource [FN02] (off)
[    0.263951] ACPI: Power Resource [FN03] (off)
[    0.264074] ACPI: Power Resource [FN04] (off)
[    0.265863] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
[    0.277730] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 *11 12 14 15)
[    0.277808] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *10 11 12 14 15)
[    0.277882] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 *11 12 14 15)
[    0.277956] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 *11 12 14 15)
[    0.278030] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15)
[    0.278103] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 *11 12 14 15)
[    0.278176] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 *11 12 14 15)
[    0.278250] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 *11 12 14 15)
[    0.279095] ACPI: bus type USB registered
[    0.279095] PCI: Using ACPI for IRQ routing
[    0.321967] pnp: PnP ACPI init
[    0.322408] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.322461] pnp 00:01: Plug and Play ACPI device, IDs PNP0303 PNP030b (active)
[    0.322520] pnp 00:02: Plug and Play ACPI device, IDs PNP0f03 PNP0f13 (active)
[    0.322736] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.322862] pnp 00:04: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.322912] system 00:05: Plug and Play ACPI device, IDs INT3f0d PNP0c02 (active)
[    0.323266] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.323337] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.323739] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.325460] system 00:09: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.326686] pnp: PnP ACPI: found 10 devices
[    0.716581] ACPI: Sleep Button [SLPB]
[    0.718428] ACPI: Power Button [PWRB]
[    0.720134] ACPI: Power Button [PWRF]
[    0.723097] ACPI: Thermal Zone [TZ00] (28 C)
[    0.724786] ACPI: Thermal Zone [TZ01] (30 C)
[    7.658677] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)

答え1

USBコントローラのOTG機能についてお問い合わせください。または、特にBIOS設定についてお問い合わせですか?

前者に答えるには、コンピュータでどのUSBコントローラが使用されているかを知る必要があります。 USBホストコントローラドライバやUS「ガジェット」ドライバモジュールをロードするのと同じくらい簡単です。

後者の場合は、オペレーティングシステム内でBIOS設定を変更するためのベンダー提供ツールまたはその他の方法があるかどうかを確認するために、コンピュータの製造元とモデルを指定する必要があります。


2つのUSBコントローラがあります。 1つ目は、チップセットに組み込まれた汎用USB3コントローラです。

00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] 

2番目はあなたの質問とより関連しています。

00:14.1 USB controller [0c03]: Intel Corporation Device [8086:9d30]
...
Kernel driver in use: dwc3-pci
Kernel modules: dwc3_pci

モジュール名dwc3_pciはモジュールであることを示します。DesignWare USB 3.0デュアルロールデバイスコントローラ。つまり、これはコントローラです。できるホストの役割からデバイスの役割に、またはその逆に切り替えます。

ここから役割移行プロセスの説明が見つかりました。次のように書かれています。

動的に変更される動作モードはデバッグ目的に役立ちますが、本番環境では絶対に使用しないでください。

システムがUSBストレージデバイスとして機能できるようにするモジュールなど、デバイスの役割CONFIG_USB_DWC3_DUAL_ROLEに必要な機能を実装するには、カーネル構成で必要なUSBガジェットドライバを選択する必要があります。g_mass_storage

debugfsまず、仮想ファイルシステムをインストールする必要があります。

mount -t debugfs none /sys/kernel/debug

次に、名前付きの1つ以上のディレクトリを見つける必要があります/sys/kernel/debug/<some hexadecimal number>.usb。各ディレクトリにはlink_statemodeおよび 。というregdumpファイルが含まれています。testmodeこのファイルを読み取ると、modeコントローラは現在実行されている役割を確認できます。このファイルに書き込むと、役割を変更できます。

cd /sys/kernel/debug/<something>.usb
echo host > mode    # switch to host role
echo device > mode  # switch to device role

免責事項:私は実際にこのUSBコントローラを何らかの方法で使用した経験がありません。これは純粋に私がリンクした文書を読んだことに基づいています。私が間違っている可能性があります。この記事を読んでいる人がもっと知っている場合は、この回答を自由に編集してください。

関連情報