^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) ===================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) Serial UART 16450/16550 MIDI driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ===================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) The adaptor module parameter allows you to select either:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * 0 - Roland Soundcanvas support (default)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * 1 - Midiator MS-124T support (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * 2 - Midiator MS-124W S/A mode (2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * 3 - MS-124W M/B mode support (3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * 4 - Generic device with multiple input support (4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) For the Midiator MS-124W, you must set the physical M-S and A-B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) switches on the Midiator to match the driver mode you select.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) In Roland Soundcanvas mode, multiple ALSA raw MIDI substreams are supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) (midiCnD0-midiCnD15). Whenever you write to a different substream, the driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) sends the nonstandard MIDI command sequence F5 NN, where NN is the substream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) number plus 1. Roland modules use this command to switch between different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) "parts", so this feature lets you treat each part as a distinct raw MIDI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) substream. The driver provides no way to send F5 00 (no selection) or to not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) send the F5 NN command sequence at all; perhaps it ought to.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) Usage example for simple serial converter:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) /sbin/setserial /dev/ttyS0 uart none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) /sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 speed=115200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) Usage example for Roland SoundCanvas with 4 MIDI ports:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) /sbin/setserial /dev/ttyS0 uart none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) /sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 outs=4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) In MS-124T mode, one raw MIDI substream is supported (midiCnD0); the outs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) module parameter is automatically set to 1. The driver sends the same data to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) all four MIDI Out connectors. Set the A-B switch and the speed module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) parameter to match (A=19200, B=9600).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) Usage example for MS-124T, with A-B switch in A position:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) /sbin/setserial /dev/ttyS0 uart none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) /sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 adaptor=1 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) speed=19200
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) In MS-124W S/A mode, one raw MIDI substream is supported (midiCnD0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) the outs module parameter is automatically set to 1. The driver sends
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) the same data to all four MIDI Out connectors at full MIDI speed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) Usage example for S/A mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) /sbin/setserial /dev/ttyS0 uart none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) /sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 adaptor=2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) In MS-124W M/B mode, the driver supports 16 ALSA raw MIDI substreams;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) the outs module parameter is automatically set to 16. The substream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) number gives a bitmask of which MIDI Out connectors the data should be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) sent to, with midiCnD1 sending to Out 1, midiCnD2 to Out 2, midiCnD4 to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) Out 3, and midiCnD8 to Out 4. Thus midiCnD15 sends the data to all 4 ports.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) As a special case, midiCnD0 also sends to all ports, since it is not useful
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) to send the data to no ports. M/B mode has extra overhead to select the MIDI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) Out for each byte, so the aggregate data rate across all four MIDI Outs is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) at most one byte every 520 us, as compared with the full MIDI data rate of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) one byte every 320 us per port.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) Usage example for M/B mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) /sbin/setserial /dev/ttyS0 uart none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) /sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 adaptor=3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) The MS-124W hardware's M/A mode is currently not supported. This mode allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) the MIDI Outs to act independently at double the aggregate throughput of M/B,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) but does not allow sending the same byte simultaneously to multiple MIDI Outs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) The M/A protocol requires the driver to twiddle the modem control lines under
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) timing constraints, so it would be a bit more complicated to implement than
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) the other modes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) Midiator models other than MS-124W and MS-124T are currently not supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) Note that the suffix letter is significant; the MS-124 and MS-124B are not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) compatible, nor are the other known models MS-101, MS-101B, MS-103, and MS-114.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) I do have documentation (tim.mann@compaq.com) that partially covers these models,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) but no units to experiment with. The MS-124W support is tested with a real unit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) The MS-124T support is untested, but should work.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) The Generic driver supports multiple input and output substreams over a single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) serial port. Similar to Roland Soundcanvas mode, F5 NN is used to select the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) appropriate input or output stream (depending on the data direction).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) Additionally, the CTS signal is used to regulate the data flow. The number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) inputs is specified by the ins parameter.