Roland J-6 MIDI output not working under Ubuntu desktop

Hi folks, I’m not sure if this is the right place to post but I’m fresh out of ideas for this.

Ubuntu Version:
25.10 Desktop

Desktop Environment (if applicable):
GNOME

Problem Description:
I have recently got myself a Roland J-6 and am trying to use it as a MIDI controller. It appears to function properly as a MIDI receiver (I can send data from my computer to the device), but reading MIDI from it appears to be stuck.

When running the amidi -p hw:1 -c --dump I only receive two clock messages (F8).

I did some debugging on Windows using MIDI-OX and was able to verify that the device works as a controller from there, so it seems with the right kinds of signalling it’s possible to read MIDI from the device beyond just two clock messages.

Relevant System Information:
I’m using pretty vanilla Ubuntu Desktop (25.10) on an HP Spectre laptop.

lsusb/dmesg Outputs:

lsusb gives me

Bus 003 Device 031: ID 0582:02a0 Roland Corp. J-6

(The device number is pretty high because I’ve been poking around with a kernel patch with no luck so far).

When I turn the device on in sudo dmesg I see:

[21169.066215] usb 3-1: USB disconnect, device number 30                                                                                    
[21181.069275] usb 3-1: new full-speed USB device number 31 using xhci_hcd
[21181.195270] usb 3-1: New USB device found, idVendor=0582, idProduct=02a0, bcdDevice= 1.00                                                
[21181.195276] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=12                                                           
[21181.195278] usb 3-1: Product: J-6                                                                                                        
[21181.195279] usb 3-1: Manufacturer: Roland                  
[21181.195280] usb 3-1: SerialNumber: 21007500165031304D303420                                                                              
[21181.199458] usb 3-1: Parsing interface 3...
[21181.199463] usb 3-1: Quirk or no altset; falling back to MIDI 1.0     

There may be some debug messages in there.

What I’ve Tried:

Alright, I may forget some things, but I’ve tried:

  • Adding a custom quirk in the snd-usb-audio kernel module. I mostly ended up recreating what the kernel just does by default.

    • I attempted setting 0x00 with the SET INTERFACE command (see packet capture) instead of 0x01 during device startup, but this led to an error, so I’m not sure why it seems to work on Windows.
    • I attempted adding a quirk to quirk-tables.h and setting the endpoints manually, but this only ended up recreating the default setup as far as I could tell.
  • Capturing USB packets from the Windows and Ubuntu to see if their setups are different (they are slightly different, but I’m not sure how much some of the things being done matter). See attached.

  • Using qjackctl to wire the J-6 into fluidsynth, but this didn’t appear to work even after mapping to fluidsynth from the J-6. The reverse did work (piping MIDI into the J-6 from fluidsynth).

  • Dumping MIDI via amidi -p hw:1 -c --dump.

  • Sending MIDI (which works fine) via amidi -p hw:1 -S '90 3E 64' (as an example). That works just fine.

  • Setting various snd-usb-audio flags via the modprobe confs.

I think about the only thing I’ve not tried is putting in some ALSA configuration files.

PCAP files are in a Google Drive here (please let me know if there’s a more preferable place to upload them). I have two Linux captures. The USB addresses are in the file names. The one with the higher address name has some debugging attempts in it, so apologies if that is confusing (I’m just attempting to read from the device. You can see a few of the MIDI clock messages in there).

Okay, it’s been a long journey, but I figured out something that works. It’s really hacky. I believe it boils down to a timing issue with the Roland J-6 firmware itself, or I just totally don’t understand how MIDI is supposed to work (could be the latter, honestly).

tl;dr you need to race with the device to get it working, e.g. you have to start reading the MIDI the moment the device has been queried.

This is with the Roland J-6 1.02 firmware (in the case that this isn’t how MIDI is just supposed to work).

Getting it to work (sort of)

Step 1:

Just turn on the device while it’s connected. Wait for it to turn on, yadda yadda. Then run:

amidi -l

You’ll see something like:

Dir Device    Name
IO  hw:1,0,0  J-6 MIDI OUT

Remember this hw:1,0,0 it is important. You can abbreviate it with hw:1 but I’m just going to use the whole thing in this example.

Step 2:

Turn off the J-6, but keep it plugged in.

Step 3:

Open two terminals. In one, run:

sudo tail -f /var/log/syslog

Then in the other, type in this command but do not yet run it (replace this with whatever your J-6 port is):

amidi -p hw:1,0,0 -c --dump

Next, flip the J-6 switch to “on.” And watch for messages similar to these printing out from the syslog terminal:

kernel: usb 3-3: new full-speed USB device number 19 using xhci_hcd
kernel: usb 3-3: New USB device found, idVendor=0582, idProduct=02a0, bcdDevice= 1.00
kernel: usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=12
kernel: usb 3-3: Product: J-6
kernel: usb 3-3: Manufacturer: Roland
kernel: usb 3-3: SerialNumber: 21007500165031304D303420        
kernel: usb 3-3: Quirk or no altset; falling back to MIDI 1.0
mtp-probe: checking bus 3, device 19: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-3"
mtp-probe: bus: 3, device: 19 was not an MTP device
mtp-probe: checking bus 3, device 19: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-3"
mtp-probe: bus: 3, device: 19 was not an MTP device

Once these snd-usb-audio kernel module messages start printing, then run the above command. If you’ve done it successfully, it’ll start printing out F8 (the MIDI clock signal) repeatedly. If not, it will, at most, print out two clock signals and then stall. You’ll just have to reboot the J-6 and try again.

Connecting it to something like LMMS

If you want to connect this to LMMS or something else, you’ll need to set it up to connect to (for this example) hw:1,0,0 for a “raw” ALSA device, and then make sure to run the above steps before starting the software so that the J-6 gets into the correct state.

Then, LMMS should stall while starting up and attempting to access the MIDI device, and in the window running the amidi dump just CTRL-C it and from there you should be good to go.

It appears that if you stop dumping MIDI the device will stop sending out midi keys.

It’s all very buggy, and sometimes it doesn’t work right. I’m sorry, it’s the best I could figure out.

Additional Details

I noticed the same issue I described above (e.g. only two clock messages appearing) when testing this on a Mac M1 with Wireshark. The device would only behave correctly (sending MIDI output to the machine) when I kept an active MIDI test running in the Mac MIDI studio. It was then that I thought of this awful hack, which then worked.

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.