Please ensure Javascript is enabled for purposes of website accessibility Jump to content

Line 6 With Linux?


Kellaway
 Share

Recommended Posts

I've just acquired a Line 6 HD300 unit and at the same time am considering a change of OS over to Ubuntu Linux for various reasons like MS no longer supporting XP..

Has anyone out there used this combination? There is no mention of Linux in the Monkey downloads.

I have very slow satellite broadband and have found the Monkey downloads so far painfully slow or even impossible as the biggest upgrade refuses to load the latest version. So I'm thinking Linux might make it totally impossible.

I may have to take the computer to a fast broadband for downloads but if Linux does work with it this would help.

 

Cheers,

Dan

Link to comment
Share on other sites

they are not line6 supported, and will not enable any line6 applications to work natively within linux.

they are 3rd party audio drivers, that you can of course use of your own risk.

Yeah I think any drivers that you are gonna find are gonna be third party.  I have never seen any pro audio manufacturer who supports linux..  But thats a perk of open source some one else will help you out in the comunity...

Link to comment
Share on other sites

I've just acquired a Line 6 HD300 unit and at the same time am considering a change of OS over to Ubuntu Linux for various reasons like MS no longer supporting XP..

Has anyone out there used this combination? There is no mention of Linux in the Monkey downloads.

I have very slow satellite broadband and have found the Monkey downloads so far painfully slow or even impossible as the biggest upgrade refuses to load the latest version. So I'm thinking Linux might make it totally impossible.

I may have to take the computer to a fast broadband for downloads but if Linux does work with it this would help.

 

Cheers,

Dan

 

The best thing to do is use a second computer (up to date with patches) and disconnect it from the Internet. Use that for Line 6 and other gear that needs Windows. Use Linux for everything else.

Link to comment
Share on other sites

Hey Kellaway,

 

I am a linux user too and I can confirm that if you install windows 7 on a virtual machine (virtualbox for example) it works! You can even upgrade the firmware/flash of your Line 6 HD300! I did it with my HD500x and I guess it should work with the HD300 aswell!

 

Good luck ;)

Link to comment
Share on other sites

  • 1 month later...

Can anyone help me with how to use through a virtual machine? I can't get HD edit or Monkey to recognize my firmware past 1.0 and monkey says that the latest version is 1.0...besides that it works fine, I just need to fix this last firmware problem.

 

Thanks,

Tim

Hi Tim,

 

I have got the same problem but in my case Monkey installed automatically the latest firmware. Make sure that your multieffect is recognised by the virtual machine and do not use usb hubs.  

Link to comment
Share on other sites

  • 6 months later...
  • 2 years later...

at least in kernel 4.4 are included line6 modules. In ubuntu if you go to /lib/modules/4.4.0-36-generic/kernel/sound/usb/line6 you will see the modules:

snd-usb-line6
snd-usb-podhd
snd-usb-pod
snd-usb-toneport
snd-usb-variax

you should be able to load them with: modprobe
example:
sudo modprobe snd-usb-podhd

unfortunnately I haven't been able to bring my hd500x running, I don't know if it is because of the X or not. modprobe work's fine but I don't see it with

cat /proc/asound/cards

nor I see it in alsamixer.

hope this help, let us know how it goes.

Link to comment
Share on other sites

  • 1 month later...

I also use LInux.  One method to still use Windoze is to download Disk2vhd (the one i have is 2.01) from sysinternals.com.  This will allow you to create a virtual image of your Windoze computer.  If you use VirtualBox then when you open the program uncheck the "Use Vhdx" box.

 

Once that is done create your image, import to VirtualBox in Linux.  You will need to do some config on memory, video memory, USB port sharing but I suggest you RTFM or check forums on VirtualBox.

 

This only works if you have a Windoze pc still around.  If you don't, find a friend that has one that is not in use and clone it (with the understanding they format that pc so you do not violate the EULA).

Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...
  • 9 months later...

Hi folks

I recently got a Line6 Helix LT and saw it is kinda usb-compliant at least on the mac.

So i gave it a try on linux and got it run.

I had to hack alsa to not try to read or set the fixed default 48kHz samplerate.

Then i still had small soundglitches cause the usbrate does not follow, so i made a hack with

an arbitrary value read from another working usb interface here too. ( implicite feedback not available ? )

Result: it works fine with jack ( incl. midi ), setting up all 8 in/out and also aggregate it via alsa_in/alsa_out with my focusrite scarlett 6i6.

Todo:

Pure alsa does not work atm as i don't get the control interface setup to have a mixer, which should be a passthrough like on mac annyway.

When i have time i wanna get rid of my arbitrary hack to read out properly the usb rate from the interface3 feedback endpoint.

Perhaps it can be calculated other way or a timer is needed, not sure atm..

Roundup: Helix (LT) is somewhat compliant on linux alsa, but needs some quirks. Perhaps such could be better supported in next firmware update.

/proc/asound/HELIX/stream0:

LINE 6 HELIX at usb-0000:07:00.0-2, high speed : USB Audio

Playback:
  Status: Running
    Interface = 2
    Altset = 1
    Packet Size = 224
    Momentary freq = 48005 Hz (0x6.0029)
  Interface 2
    Altset 1
    Format: S32_LE
    Channels: 8
    Endpoint: 3 OUT (ASYNC)
    Rates: 48000
    Data packet interval: 125 us

Capture:
  Status: Running
    Interface = 3
    Altset = 1
    Packet Size = 224
    Momentary freq = 48005 Hz (0x6.0029)
  Interface 3
    Altset 1
    Format: S32_LE
    Channels: 8
    Endpoint: 3 IN (ASYNC)
    Rates: 48000
    Data packet interval: 125 us


Cheers ... Jens

  • Upvote 3
Link to comment
Share on other sites

  • 5 weeks later...

Hi, Just Startin'

 

Will it be possible to post, the steps you have made to make Alsa recognize Helix speed correctlly?

 

I guess I wil have to download ALSA and recompile it with specific exclusion of speed negotiation for the Helix,

is that so?

 

Will it be better for me to wait for it to be at the next ALSA release?

 

Was it required any kernel changes required also?

 

Thanks 

These are greate news, and

I hope Line6 will make Helix more USB compliant, on next Firmware Update

so it would work out of the box in OSX and Linux, with no driver or othe changes required.

This will also assure that no matter what changes would Apple or Linux do, Helix would remain rock solid.

Link to comment
Share on other sites

I hope Line6 will make Helix more USB compliant, on next Firmware Update

so it would work out of the box in OSX and Linux, with no driver or othe changes required.

This will also assure that no matter what changes would Apple or Linux do, Helix would remain rock solid.

 

The Helix is already a Class Compliant OS X Core Audio USB device...

Link to comment
Share on other sites

Hi, Just Startin'

 

Will it be possible to post, the steps you have made to make Alsa recognize Helix speed correctlly?

 

I guess I wil have to download ALSA and recompile it with specific exclusion of speed negotiation for the Helix,

is that so?

 

Will it be better for me to wait for it to be at the next ALSA release?

 

Was it required any kernel changes required also?

 

Thanks 

These are greate news, and

I hope Line6 will make Helix more USB compliant, on next Firmware Update

so it would work out of the box in OSX and Linux, with no driver or othe changes required.

This will also assure that no matter what changes would Apple or Linux do, Helix would remain rock solid.

 

Hi

The steps i made are very simple atm., also i only recompile the snd_usb_audio.ko for the runninng kernel.

I'am awaiting some hints from alsa devs to make the ep->freqn requested in the right way, but thats not yet solved.

Up to now all voodoo i tried did not gave me better results ( such as sync_endpoint redirection etc. )

So ....either get your kernel from the precompiled repo, or git clone the dedicated tag, up to you.( latter is better to diff later )

 

My diff:

diff --git a/sound/usb/format.c b/sound/usb/format.c
index 2c44386..1c0107d 100644
--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -298,6 +298,20 @@ static int parse_audio_format_rates_v2(struct snd_usb_audio *chip,
 		goto err;
 	}
 
+	/*
+	* Line6 HELIX does not respond to sample rate
+	* query requests. The only valid rate is 48000.
+	*/
+	if (chip->usb_id == USB_ID(0x0e41, 0x4244)) {
+		fp->nr_rates = 1;
+        	fp->rate_min = 48000;
+        	fp->rate_max = 48000;
+        	fp->rates = SNDRV_PCM_RATE_48000;
+        	fp->rate_table = kmalloc(sizeof(int), GFP_KERNEL);
+        	fp->rate_table[0] = 48000;
+        	return 0;
+    	}
+
 	/* get the number of sample rates first by only fetching 2 bytes */
 	ret = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_RANGE,
 			      USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_DIR_IN,

diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
index c90607e..026095a 100644
--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -888,6 +888,8 @@ int snd_usb_endpoint_set_params(struct snd_usb_endpoint *ep,
 
        if (snd_usb_get_speed(ep->chip->dev) == USB_SPEED_FULL)
                ep->freqn = get_usb_full_speed_rate(rate);
+       else if (USB_ID(0x0e41, 0x4244))
+               ep->freqn = get_usb_high_speed_rate(rate + 5); // ugly helix hack
        else
                ep->freqn = get_usb_high_speed_rate(rate);
 

Then i recompile form linux/sound/usb directory with a modified makefile:

KVERSION = $(shell uname -r)

snd-usb-audio-objs := 	card.o \
			clock.o \
			endpoint.o \
			format.o \
			helper.o \
			mixer.o \
			mixer_quirks.o \
			mixer_scarlett.o \
			pcm.o \
			proc.o \
			quirks.o \
			stream.o

snd-usbmidi-lib-objs := midi.o

# Toplevel Module Dependency
obj-m += snd-usb-audio.o snd-usbmidi-lib.o

all:
	make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

The resulting snd-usb-audio.ko goes to: /lib/modules/<your_actual_kernel_version>/kernel/sound/usb

 

Unload the former module: sudo rmmod snd_usb_audio

Then either plugin your helix or if already done : sudo modprobe snd_usb_audio

 

Thats it. The line where i add 5Hz to the usbrate may vary for you, i recommend to have another usb-interface plugged it the same port and get

the runtime rate from /proc/asound/<other_interface>/stream0 ( sound must be played thru this to see the runtime parameters )

 

I will post when i have a clean solution and will try to bring this to the kernel backports then.

 

Btw: 'am not sure if the OSX behavior can be called fully class compliant, but at least there you can get 48kHz without an additional driver.

Other interfaces at least allow to read and set the samplerate in a not vendorspecific way. Would be nice Line6 could reach out for possible

Linux users/buyers here ;)

The final goal would be to have this on alsa too + later can choose the other available samplerates. Hope never dies :)

 

Does this help ? ... Jens

  • Upvote 2
Link to comment
Share on other sites

Hi, Jens

 

Yes, I can see all the 8 channels, and re-amp on linux and Ardour and all thanks to you

 

As you've mentioned 

1. JACK is required since it is not plays directly using ALSA and PulseAudio,

However, Jack sink works greate. 

2. It will be required to recopy snd_usb_audio on every kernel update.

 

But it is huge benefit being able to Re-Amp and  not to require all of those XLR cables

 

Thanks

Shemeshg

  • Upvote 1
Link to comment
Share on other sites

Hi, Jens

 

Yes, I can see all the 8 channels, and re-amp on linux and Ardour and all thanks to you

 

As you've mentioned 

1. JACK is required since it is not plays directly using ALSA and PulseAudio,

However, Jack sink works greate. 

2. It will be required to recopy snd_usb_audio on every kernel update.

 

But it is huge benefit being able to Re-Amp and  not to require all of those XLR cables

 

Thanks

Shemeshg

 

Great you made it :)

 

Yep, avoiding analog wiring is a big quality win.

As well is the working midi, which allows you to use the miditemo depending delay timings + patch changes etc..

 

Just prepare an "all time patch", we need not to change kernels such often ( i hope, ask Intel :P) )

 

If you like you can post your experience in the alsa mailing lists too. More users rise the interest for developing a full implementation.

 

Sidenote: using pulse-jacksink can disturb jack freewheeling which is for example used by Ardour (stem-) export. If you experience oddness,

just deactivate for this usecase. ( pactl unload-module module-jack-sink / pactl load-module module-jack-sink channels=2 ),

i use prepared scripts for load/unload in the linux mint cinnamon scripts applet )

 

Cheers ... Jens

Link to comment
Share on other sites

  • 1 month later...

The kernel has changed in the last days it is now 4.4.0-116-lowlatency

And I can not find it's source on the internet, (so I could recompile  snd_usb_audio)

Could any one post here a link for the kernel?

 

Thanks

Shemeshg

 

Initially you would not need to get a new kernel source, if snd_usb did not change.

If in doubt, check the changelog.

The makefile i posted always uses : KVERSION = $(shell uname -r)  aka

uses the headers of the active kernel. So just recompile that part.

 

If you absolutely need to renew all:

 

Actual: https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.116.tar.gz

 

The kernels are always to find in : https://www.kernel.org/pub/linux/kernel/v4.x/

 

Or you clone the main repo ( git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git )  and checkout the wished tag and patch it. ( you can also cherrypick sound/usb )

 

Compile snd_usb_audio like described formerly.

 

 

Full kernel:

 

Don't forget to check its setup before compile, i use:

 

cp /boot/config-`uname -r` .config

make oldconfig

make menuconfig

 

Set lowlatency + timers to 1000Hz + HW timers used ( will be active if the former config was configured like this already )

 

Then compile typically with:

 

make -j `nproc` LOCALVERSION= deb-pkg

 

Jens

  • Upvote 1
Link to comment
Share on other sites

Hi

 

this solved it

 

(it seems some dependencies of snd_usb  changed since the syslog with `tail -f` notified that snd_usb is .114 and not compatible with 116]

 

Thanks

Shemeshg

 

Hi Shemeshg

 

Perhaps i was not clear enough.

If you change the kernel (-headers), you have always to recompile the module else you break the dependencies.

KVERSION = $(shell uname -r)  assures you link to the active one.

 

You may have just copied the former compiled snd_usb_audio to 4.4.116, this will not work.

Syslog with `tail -f` notificatien implies this.

 

What can work is using a newer or older linux/sound/usb as long as you compile it against KVERSION.

This may give you an advantage in fixed components, but also may break some other if it also depends on other sound changes.

So staying in the 4.4.xxx is a bit safer. I tested up to 4.10.xxx will work also, but does not give benefits for helix. ( but for the other line6 drivers )

Matching the source to KVERSION is indeed the best option, as you get backported stuff/fixes too.

 

Hope this clarifies it .... Jens

Link to comment
Share on other sites

@ Shemeshg

 

I pm'ed you a bashscript to automate the patching/compiling/modulereplace.

 

All patches and the modified makefile is included. Just unpack in kernel sourcedir and run.

 

Pls test. Unfortunately i still could not catch an expert on the usbrate thingie, so as long as we must patch this is more convenient at least.

 

Only  you must get the desired kernel src still,, i tested with 4.4.119 ( wget -c https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.119.tar.gz )

 

Cheers ... Jens

  • Upvote 1
Link to comment
Share on other sites

Hi

 

downloaded yesterday, tested on two machines (16.04 Ubuntu studio, 16.04 regular Ubuntu)

 was successful on two machines.

 

I'm not sure why is 

"""

    echo Setting up config ...
    cp /boot/config-$KVERSION .config
""
For me
"""
        echo "Compiling with echo $MAKEOPTS threads"
        cd $SOURCEDIR/sound/usb
        make $MAKEOPTS
"""
was sufficient
 

Thanks

Shemeshg 

Link to comment
Share on other sites

Hi

 

downloaded yesterday, tested on two machines (16.04 Ubuntu studio, 16.04 regular Ubuntu)

 was successful on two machines.

 

I'm not sure why is 

"""

    echo Setting up config ...
    cp /boot/config-$KVERSION .config
""
For me
"""
        echo "Compiling with echo $MAKEOPTS threads"
        cd $SOURCEDIR/sound/usb
        make $MAKEOPTS
"""
was sufficient
 

Thanks

Shemeshg 

 

I made this just for safety, in case you have a specialized bootconfig in the active kernel.

Such can be using hardwaretimers or other relevant settings in alsa.

It makes sure the snd_usb is configured same as your active kernel.

 

EDIT: just saw: echo "Compiling with echo $MAKEOPTS threads" should read echo "Compiling with $MAKEOPTS threads"

Late night cp/paster error, but not functional relevant.

 

Jens

Link to comment
Share on other sites

  • 3 months later...
  • 5 months later...

Jens,

 

Any chance you could forward those steps to me as well?  I have tried using whats on this thread, and am getting a "whole lotta failures".  I think I am close.  :)

 

I just want to Jack to see my Helix.  That will solve my issues.  

 

Thanks,

 

Rod

Link to comment
Share on other sites

19 hours ago, rodneyrb said:

Jens,

 

Any chance you could forward those steps to me as well?  I have tried using whats on this thread, and am getting a "whole lotta failures".  I think I am close.  :)

 

I just want to Jack to see my Helix.  That will solve my issues.  

 

Thanks,

 

Rod

 

Hi Rodney, you got pm.

As you use another kernel as me we must first sort out what fails, perhaps the suggestions i made already helped you.

If so just edit the linked script/patch package accordingly and all should go well.

If not pls leave a log here so i can judge the problem.

I'am sure its just due the where modules/devices added in between.

 

Jens

Link to comment
Share on other sites

  • 1 month later...
  • 3 months later...
  • 1 month later...
On 1/22/2019 at 7:31 PM, deufrai said:

Sorry for the necroposting, but wanted to thank and report

System : Linux Mint 19 + KXStudio repos with 4.15.0-43-lowlatency kernel

 

Patches provided by @jensverwiebe work flawlessly *without* the +5Hz hack on the endpoint.c file

 

Many thanks !

 

Stupid question but are the patches only included in that debian kernel?

I am running arch linux and I'm getting the "parse_audio_format_rates_v2v3(): unable to retrieve number of sample rates (clock 16)" error.


When I try to compile the usb module I get the following error
make all
make -C /lib/modules/5.1.15-arch1-1-ARCH/build M=/home/johan/kernelbuild/linux-5.1.15/sound/usb modules
make[1]: Entering directory '/usr/lib/modules/5.1.15-arch1-1-ARCH/build'
make[2]: *** No rule to make target '/home/johan/kernelbuild/linux-5.1.15/sound/usb/snd-usb-audio.c', needed by '/home/johan/kernelbuild/linux-5.1.15/sound/usb/snd-usb-audio.o'.  Stop.

Not sure how to proceed...

Link to comment
Share on other sites

  • 2 weeks later...
On 7/1/2019 at 10:44 PM, johan1a said:

 

Stupid question but are the patches only included in that debian kernel?

I am running arch linux and I'm getting the "parse_audio_format_rates_v2v3(): unable to retrieve number of sample rates (clock 16)" error.


When I try to compile the usb module I get the following error
make all
make -C /lib/modules/5.1.15-arch1-1-ARCH/build M=/home/johan/kernelbuild/linux-5.1.15/sound/usb modules
make[1]: Entering directory '/usr/lib/modules/5.1.15-arch1-1-ARCH/build'
make[2]: *** No rule to make target '/home/johan/kernelbuild/linux-5.1.15/sound/usb/snd-usb-audio.c', needed by '/home/johan/kernelbuild/linux-5.1.15/sound/usb/snd-usb-audio.o'.  Stop.

Not sure how to proceed...

 

Hi Johan

1.The error is not distro agnostic but a kernel/alsa thing.

 

2.To me it looks you are compiling from the wrong directory.

Make sure to stay inside the gotten sourcedir usb dir.

In your case it should be cd /home/johan/kernelbuild/linux-5.1.15/sound/usb

 

Or:

Get this patch and scriptset from me: www.jensverwiebe.de/Other/audio_patching.tar.xz

Unpack into your kernel-src, run script right from that dir ( all explained in the README ).

 

Btw: Someone took my patch and commited it partly to alsa, so it might show up upstream anytime soon.

 

Jens

Link to comment
Share on other sites

  • 1 month later...

I just got a line6 Helix and managed to use it as an audio interface on Ubuntu 19.04 thanks to @jensverwiebe . Everything seems to work flawlessly so far!

 

 

Here are the steps to follow:

  1. get the Ubuntu 19.04 kernel source (it should be easy to transpose it to your system)
    git clone git://kernel.ubuntu.com/ubuntu/ubuntu-disco.git

     

  2. download Jens' patch and unpack it into the kernel source folder
    cd ubuntu-disco
    wget www.jensverwiebe.de/Other/audio_patching.tar.xz 
    tar -xvf audio-patching.tar.xz
    cd audio-patching

     

  3. if you can, plug a usb interface into the usb port you want to use for the helix, play some sound and get the runtime rate

    cat /proc/asound/<other_interface>/stream0

    you should get something like this:

    Playback:
      Status: Running
        Interface = 2
        Altset = 1
        Packet Size = 224
        Momentary freq = 48002 Hz (0x6.0010)
      Interface 2
        Altset 1
        Format: S32_LE
        Channels: 8
        Endpoint: 3 OUT (ASYNC)
        Rates: 48000
        Data packet interval: 125 us
    
    Capture:
      Status: Running
        Interface = 3
        Altset = 1
        Packet Size = 224
        Momentary freq = 48002 Hz (0x6.0010)
      Interface 3
        Altset 1
        Format: S32_LE
        Channels: 8
        Endpoint: 3 IN (ASYNC)
        Rates: 48000
        Data packet interval: 125 us

    the Momentary freq line gives you the runtime rate
     

  4. Open helix_clock_patch.txt:
    1. Find the following line
      +               ep->freqn = get_usb_high_speed_rate(rate + 5); // ugly helix hack 

      Edit it to match the runtime rate that you found, in my case:

      +               ep->freqn = get_usb_high_speed_rate(rate + 2); // ugly helix hack 

       

    2. If you have a Helix, you'll have to change  both occurrences of

      USB_ID(0x0e41, 0x4244)

      to

      USB_ID(0x0e41, 0x4241))

        the usb id of your pedalboard can be found using

      cat /proc/asound/HELIX/usbid

       

  5. run Jens script with admin rights and apply all changes

    sudo ./helix_patch_and_module_replace.sh

    plug your Helix into your computer, it should be recognized by jack as a USB audio interface now (working only for 48kHz)

 

In case of a kernel update, you'll have to make the same changes to the new kernel:

  1. checkout your current kernel branch
    git checkout Ubuntu-<kernel-release>

    you can check that your source matches your current kernel

    uname -r
    git show

     

  2. run the script again and apply all changes, you might have to unplug and plug again your Helix

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...