Kernel

如何創建多個 snd-vimidi 設備

  • December 29, 2021

根據如何創建第二個 MIDI 設備?沒有人可以創建多個 virmidi 設備,但這似乎對我不起作用 - 根據aconnect -l我得到的正好一個:

client 14: 'Midi Through' [type=Kernel]
   0 'Midi Through Port-0'

這是我嘗試過的配置(和選項)。

> cat /etc/modules-load.d/90-virmidi.conf
snd-virmidi
# check params:
> /usr/sbin/modinfo snd-virmidi

# configure the module
# attempt #1
> cat /etc/modprobe.d/90-virmidi.conf
options snd-virmidi enable=1,1 midi_devs=1,1
# attempt #2
> cat /etc/modprobe.d/90-virmidi.conf
options snd-virmidi index=0 enable=1 midi_devs=1
options snd-virmidi index=1 enable=1 midi_devs=1
# attempt #3
> cat /etc/modprobe.d/90-virmidi.conf
options snd-virmidi index=0,1 enable=1,1 midi_devs=2,2
# reboot
# check params:
> cat /sys/module/snd_virmidi/parameters/*
Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N
(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4

我發現一些令人困惑的事情:

  • lsmod 將模組顯示為“snd_virmidi”,但文件是 snd-virmidi.ko - 我不確定配置中需要使用哪種拼寫
  • 我沒有辦法從日誌中檢查 /etc/modprobe.d/90-virmidi.conf 是否被使用。

有什麼我想念的想法嗎?

您是否完全按照您連結的問答進行了嘗試?

第一步是modprobe直接執行,驗證驅動是否正常工作。如果我在我的機器上這樣做,我會得到

$ sudo modprobe snd-virmidi enable=1,1,1,1,1 midi_devs=1,1,1,1,1
$ ll /dev/midi*
crw-rw---- 1 root audio 14, 18 Dez 29 19:52 /dev/midi1
crw-rw---- 1 root audio 14, 34 Dez 29 19:52 /dev/midi2
crw-rw---- 1 root audio 14, 50 Dez 29 19:52 /dev/midi3
crw-rw---- 1 root audio 14, 66 Dez 29 19:52 /dev/midi4
crw-rw---- 1 root audio 14, 82 Dez 29 19:52 /dev/midi5

所以這行得通。如果它也適用於您的機器,下一步是創建您的配置文件

> cat /etc/modprobe.d/90-virmidi.conf
options snd-virmidi enable=1,1 midi_devs=1,1

然後執行 modprobe snd-virmidi。因為options只設置預設選項,所以不插入核心模組。

如果您希望模組在啟動時插入,那麼有多種方法可以實現,因此您需要決定哪種方法最適合您。這取決於您的案例(您需要虛擬 MIDI 介面做什麼?),您還沒有解釋。

引用自:https://unix.stackexchange.com/questions/684336