https://wiki.archlinux.org/api.php?action=feedcontributions&user=Milk&feedformat=atomArchWiki - User contributions [en]2024-03-29T09:08:57ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=User:Milk&diff=777734User:Milk2023-05-10T23:04:17Z<p>Milk: update name n irc</p>
<hr />
<div>milkii on Libera.Chat<br />
<br />
See also my wiki: https://wiki.thingsandstuff.org</div>Milkhttps://wiki.archlinux.org/index.php?title=JACK_Audio_Connection_Kit&diff=711320JACK Audio Connection Kit2022-01-18T23:10:25Z<p>Milk: /* Comparison of JACK control GUIs */ studio-controls-git</p>
<hr />
<div>[[Category:Sound]]<br />
[[es:JACK Audio Connection Kit]]<br />
[[ja:JACK Audio Connection Kit]]<br />
{{Related articles start}}<br />
{{Related|ALSA}}<br />
{{Related|Sound system}}<br />
{{Related|Pipewire}}<br />
{{Related|Professional audio}}<br />
{{Related|Pulseaudio}}<br />
{{Related articles end}}<br />
From [[Wikipedia:JACK Audio Connection Kit]]:<br />
:JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API.<br />
<br />
== Installation ==<br />
<br />
There are three different implementations of the JACK API: {{aur|jack}}, {{pkg|jack2}} and {{pkg|pipewire-jack}}. For an overview, refer to [[#Comparison of JACK implementations]].<br />
<br />
[[Install]] one of the above packages. For 32-bit application support, also install the {{aur|lib32-jack}}, {{Pkg|lib32-jack2}} or {{pkg|lib32-pipewire-jack}} package (respectively) from the [[multilib]] repository.<br />
<br />
== Configuration ==<br />
<br />
Depending on your use-case and hardware, the system may need further configuration, to allow a JACK implementation to use additional resources or to function properly.<br />
<br />
=== Latency ===<br />
<br />
The latency of a running JACK instance (i.e. how much time is spent processing one block of audio) is defined by its {{ic|frames per period}}/{{ic|sample rate}} ratio.<br />
<br />
When looking at {{man|1|jackd|ALSA_BACKEND_OPTIONS}} as an example, these parameters are defined by the {{ic|-p}} and {{ic|-r}} flags (respectively).<br />
<br />
{{Note| Depending on hardware and system configuration, a very low latency may lead to audio dropouts (aka. Xruns).<br />
Start with a reasonably high {{ic|frames per period}} value of e.g. 1024 for testing the waters and lower as much as possible.}}<br />
<br />
=== Realtime scheduling and additional resources ===<br />
<br />
All JACK implementations may make use of elevated realtime scheduling priority, which allows them to make use of the CPU cycles more often than other applications (see e.g. {{ic|-P}} in {{man|1|jackd|OPTIONS}}).<br />
<br />
The {{pkg|realtime-privileges}} package provides the {{ic|realtime}} system group, which is permitted elevated {{ic|rtprio}} and unlimited {{ic|memlock}} with a [[sysctl]] drop-in configuration file and is permitted to alter the system's {{ic|/dev/cpu_dma_latency}} file, which may be used by applications to prevent the CPU to use higher [[wikipedia:Advanced_Configuration_and_Power_Interface#Processor_states | C states]].<br />
<br />
[[Install]] the {{pkg|realtime-privileges}} package and [[Users and groups#Group management|add]] your user to the {{ic|realtime}} group to be able to use realtime scheduling priority that is higher than the default.<br />
<br />
=== Realtime kernel and advanced modifications ===<br />
<br />
A kernel facilitating the [[realtime kernel patchset]] (such as {{aur|linux-rt}} or {{aur|linux-rt-lts}}) may be used in situations where very low latencies are required.<br />
Refer to [[professional audio]] for further information and other advanced modifications.<br />
<br />
{{Note| The JACK upstream suggests that a [[Realtime_kernel_patchset| realtime kernel]] is not required by most users [https://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
== Starting the audio graph ==<br />
<br />
The different JACK implementations have varying ways of starting the audio graph.<br />
<br />
=== Jack ===<br />
<br />
Jack1 only supports starting via the {{man|1|jackd}} executable or by using one of the graphical frontends, that support starting via the library interface.<br />
<br />
=== Jack2 ===<br />
<br />
Jack2 supports starting via the {{man|1|jackd}} executable, the {{ic|jack_control}} script (provided by the {{pkg|jack2-dbus}} package), the {{ic|jack@.service}} [[systemd/user|systemd user service]] (refer to {{ic|/etc/jack/example.conf}} for configuration documentation) or by using one of the graphical frontends, that support starting via the library or [[dbus]] interface.<br />
<br />
{{warning| Only use either {{man|1|jackd}} or {{ic|jackdbus}}/ {{ic|jack_control}} for starting the audio graph. Mixing the two can lead to very confusing results!}}<br />
<br />
=== Pipewire-jack ===<br />
<br />
Pipewire's JACK implementation does not provide the {{man|1|jackd}} executable or dbus integration. The audio graph is started by the {{ic|pipewire.service}} [[systemd/user|systemd user service]].<br />
<br />
== Comparison of JACK implementations ==<br />
<br />
The following table lists the current implementations of the JACK API and their differing feature sets.<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! Name !! Maintenance || Language !! [[wikipedia: Symmetric_multiprocessing| SMP]] support !! Jackd executable !! Dbus integration !! Systemd integration !! Firewire support !! ALSA MIDI support !! Multi soundcard support<br />
|-<br />
| {{aur|jack}} || Inactive || C || {{No}} || {{Yes}} || {{No}} || {{No}} || {{pkg|libffado}} || Builtin || {{pkg|jack-example-tools}}<br />
|-<br />
| {{pkg|jack2}} || Active || C/C++ || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{pkg|libffado}} || {{pkg|a2jmidid}} [https://github.com/jackaudio/jack2/issues/362] || {{pkg|jack-example-tools}}<br />
|-<br />
| {{pkg|pipewire-jack}} || Active || C/C++ || {{Yes}} || {{No}} || {{No}} || {{Yes}} || [[ALSA]] || Builtin || Builtin<br />
|-<br />
|}<br />
<br />
== Comparison of JACK control GUIs ==<br />
<br />
The following table lists control GUIs for JACK and their differing features and levels of support towards the JACK implementations.<br />
<br />
{| class="wikitable sortable" style="text-align: center;"<br />
! Name !! jack1 start/ stop !! jack2 start/ stop !! pipewire-jack start/ stop !! Patchbay !! Save graph connections !! {{pkg|new-session-manager}} support<br />
|-<br />
|{{pkg|cadence}} || {{No}} || {{Yes}} || {{No}} || {{Yes}} (Catia) || {{No}} (LADISH via Claudia is unsupported) || {{No}}<br />
|-<br />
|{{pkg|carla}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}<br />
|-<br />
|{{pkg|patchage}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}}<br />
|-<br />
|{{pkg|patchmatrix}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{No}}<br />
|-<br />
|{{pkg|qjackctl}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{Yes}} || {{No}}<br />
|-<br />
|{{pkg|studio-controls-git}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}}<br />
|}<br />
<br />
== Tips and tricks ==<br />
<br />
=== Applications for interacting with JACK and its audio graph ===<br />
<br />
* {{App|Cadence|Set of tools useful for audio production. It performs system checks, manages JACK, calls other tools and make system tweaks.|https://kx.studio/Applications:Cadence|{{Pkg|cadence}}}}<br />
* {{App|Carla|Fully-featured plugin host, with support for many audio drivers and plugin formats.|https://kx.studio/Applications:Carla|{{Pkg|carla}}}}<br />
* {{App|Jack Mixer|Multi-channel audio mixer application for the JACK Audio Connection Kit.|https://github.com/jack-mixer/jack_mixer|{{Pkg|jack_mixer}}}}<br />
* {{App|Patchage|Modular patch bay for audio and MIDI systems based on JACK and ALSA.|https://drobilla.net/software/patchage|{{Pkg|patchage}}}}<br />
* {{App|PatchMatrix|JACK patch bay in flow matrix style.|https://git.open-music-kontrollers.ch/lad/patchmatrix/about/|{{Pkg|patchmatrix}}}}<br />
* {{App|QjackCtl|Simple Qt application to control the JACK sound server daemon.|https://qjackctl.sourceforge.io/|{{Pkg|qjackctl}}}}<br />
* {{App|Studio-Controls|A JACK audio setup utility with USB device and PulseAudio bridges.|https://github.com/ovenwerks/studio-controls/|{{AUR|studio-controls-git}}}}<br />
<br />
=== Using MIDI devices ===<br />
<br />
JACK can handle one soundcard very well, and an arbitrary number of MIDI devices (connected e.g. via USB).<br />
If you start JACK and want to use a MIDI keyboard or a synthesizer or some other pure MIDI device, you have to start JACK with a proper soundcard (one that actually outputs or inputs PCM sound).<br />
As soon you have done that, you can connect the MIDI device. E.g. with QjackCtl ({{pkg|qjackctl}}), you click on the connect button and you will find your device listed under JACK-MIDI or ALSA-MIDI, depending on the driver.<br />
<br />
For JACK-MIDI, you may want to set the '''MIDI Driver''' to '''seq''' or '''raw''' in QjackCtl ''Setup > Settings''. This should make your MIDI device appear under the ''MIDI'' tab. You can also change the name of the client (from a generic "midi_capture_1" to something more descriptive), if you enable ''Setup > Display > Enable client/port aliases'' and then ''Enable client/port aliases editing (rename)''.<br />
<br />
For ALSA-MIDI, make sure to turn on '''Enable ALSA Sequencer support''' in QjackCtl ''Setup > Misc''. This will add the ''ALSA'' tab in QjackCtl ''Connect'' window where your MIDI controller will show up.<br />
<br />
{{Note| {{pkg|jack2}} does not come with bridging support for legacy ALSA MIDI only applications. Therefore {{pkg|a2jmidid}} is required [https://github.com/jackaudio/jack2/issues/362 until upstream achieves feature parity on this].}}<br />
For bridging ALSA-MIDI to JACK-MIDI, you may consider using a2jmidid ({{Pkg|a2jmidid}}). The following command will export all available ALSA MIDI ports to JACK MIDI ports:<br />
$ a2j_control --ehw && a2j_control --start<br />
They will be visible in QjackCtl under the ''MIDI'' tab labelled "a2j" client.<br />
You can automate starting of a2jmidid by adding to QjackCtl ''Setup > Options > Execute script after Startup'': {{ic|/usr/bin/a2j_control --ehw && /usr/bin/a2j_control --start}}<br />
{{note|When connecting MIDI keyboard controllers in QjackCtl, make sure to ''Expand All'' first and connect the desired ''Output Ports'' (below the ''Readable Clients'') to the ''Input Ports'' (below the ''Writable Clients''). As a shortcut, if you select a writable client instead of individual ports as your destination, it should connect all its currently displayed output ports underneath.}}<br />
<br />
*'''Q:''' What is the difference between JACK-MIDI and ALSA-MIDI?<br />
*'''A:''' The former has improved timing and sample accurate MIDI event alignment. It extends or may even replace the latter but at this point they both co-exist.<br />
<br />
To install some M-Audio MIDI keyboards, you will need the firmware package {{AUR|midisport-firmware}} in the [[AUR]]. Also, the snd_usb_audio module has to be available.<br />
For more information about specific USB MIDI devices, see https://alsa.opensrc.org/USBMidiDevices.<br />
<br />
=== A shell-based example setup ===<br />
<br />
{{Style|This section is missing proper [[Help:Style#Command line text|shell prompts]]}}<br />
<br />
JACK2 can be directly launched with the ''jackd'' executable, or controlled with the D-Bus-based ''jack_control'' binary. ''jack_control'' makes it easy to start and configure JACK2 via a shell script. Note that you must install the {{Pkg|jack2-dbus}} package to use ''jack_control''. For the ''a2j_control'' commands you also need {{pkg|a2jmidid}} installed (see [[#MIDI]] for more information).<br />
<br />
Create a shell script that can be executed at X login:<br />
<br />
{{hc|start_jack.sh|<br />
#!/bin/bash<br />
<br />
jack_control start<br />
jack_control ds alsa<br />
jack_control dps device hw:HD2<br />
jack_control dps rate 48000<br />
jack_control dps nperiods 2<br />
jack_control dps period 64<br />
sleep 10<br />
a2j_control --ehw<br />
a2j_control --start<br />
sleep 10<br />
qjackctl &<br />
}}<br />
<br />
The above will start a working JACK instance which other programs can then utilize. Details of each line follow. When discovering your own best configuration, it is helpful to do trial and error using QjackCtl's GUI with a non-D-Bus JACK2 version.<br />
<br />
==== Details of the shell-based example setup ====<br />
<br />
jack_control start<br />
Starts JACK if it is not already started.<br />
jack_control ds alsa<br />
Sets JACK to use the ALSA driver set.<br />
jack_control dps device hw:HD2<br />
Sets JACK to use ALSA-compatible sound card named HD2. One can find the names with {{ic|cat /proc/asound/cards}}. Most ALSA tutorials and default configurations use card numbers, but this can get confusing when external MIDI devices are in use; names make it easier.<br />
jack_control dps rate 48000<br />
Sets JACK to use 48000 khz sampling. Happens to work very well with this card. Some cards only do 44100, many will go much higher. The higher you go, the lower your latency, but the better your card and your CPU have to be, and software has to support this as well.<br />
jack_control dps nperiods 2<br />
Sets JACK to use 2 periods. 2 is right for motherboard, PCI, PCI-X, etc.; 3 for USB.<br />
jack_control dps period 64<br />
Sets JACK to use 64 frames per period. Lower is less latency, but the setting in this script gives 2.67 ms latency, which is nicely low without putting too much stress on the particular hardware this example was built for. If a USB sound system were in use it might be good to try 32. Anything less than 3-4 ms should be fine for realtime synthesis and/or FX, 5 ms is the smallest a human being can detect. QjackCtl will tell you how you are doing; at no-load, which means no clients attached, you will want a max of 3-5% CPU usage, and if you cannot get that without xruns (the red numbers which mean the system cannot keep up with the demands), you will have to improve your hardware.<br />
sleep 10<br />
Wait for the above to settle.<br />
a2j_control --ehw && a2j_control --start<br />
Start the ALSA-to-JACK MIDI bridge. Good for mixing in applications which take MIDI input through ALSA but not JACK.<br />
sleep 10<br />
Wait for the above to settle.<br />
qjackctl &<br />
Load QjackCtl. GUI configuration tells it to run in the system tray. It will pick up the JACK session started by D-Bus just fine, and very smoothly too. It maintains the patchbay, the connections between these applications and any other JACK-enabled apps to be started manually. The patchbay is set up using manual GUI, but connections pre-configured in the patchbay are automatically created by QjackCtl itself when apps are started.<br />
<br />
=== A GUI-based example setup ===<br />
<br />
This example setup utilizes a more GUI focused configuration and management of JACK<br />
<br />
* Install {{Pkg|jack2}} and {{Pkg|jack2-dbus}}.<br />
* Install {{Pkg|qjackctl}}, and tell your GUI window/desktop system to run it at startup.<br />
* Make sure QjackCtl is told to:<br />
** use the D-Bus interface,<br />
** run at startup,<br />
** save its configuration to the default location,<br />
** start the JACK audio server on application startup,<br />
** enable the system tray icon, and<br />
** start minimized to system tray.<br />
* Reboot.<br />
* After logging in, you will see QjackCtl in your system tray. Left-click on it.<br />
* Tweak settings in the QjackCtl GUI to lower latency. The Frame Size, Frame Buffer, and Bitrate settings all affect latency. Larger frame sizes lower latency, lower frame buffers lower latency, and higher bitrate settings lower latency, but all increase load on the sound card and your CPU. A Latency of about ~5ms is desirable for direct monitoring of instruments or microphones, as the latency begins to become perceptible at higher latencies.<br />
<br />
=== An alternative GUI-based setup ===<br />
<br />
If you use JACK for demanding tasks , but every now and then, it's possible to suspend a running pulseaudio session with QjackCtl just when you are using it. On a virgin config, modify the "Server prefix" option in the "Settings" > "Advanced" submenu, so that it states :<br />
<br />
pasuspender -- jackd<br />
<br />
The pulseaudio session should resume fine after you close QjackCtl. Tip courtesy of [https://bbs.archlinux.org/viewtopic.php?pid=1163340#p1163340 this post].<br />
<br />
=== Playing nice with ALSA ===<br />
<br />
{{Note|1=There are several bugs in {{Pkg|alsa-lib}} and {{Pkg|alsa-plugins}} 1.1.9-2 that will cause audio to not play or errors regarding buffers with this setup. Please read [https://bbs.archlinux.org/viewtopic.php?id=250116] for workarounds and potential solutions.}} <br />
To allow Alsa programs to play while jack is running you must install the jack plugin for alsa with {{Pkg|alsa-plugins}}.<br />
<br />
And enable it by editing (or creating) /etc/asound.conf (system wide settings) to have these lines if you have a simple 2-channel setup:<br />
{{bc|<nowiki><br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
If you have a different number of output/input channels or your first two channels are not the ones you wish to route audio to, you cannot use the predefined jack pcm source from {{ic|/etc/alsa/conf.d/50-jack.conf}}, but rather something like:<br />
{{bc|<nowiki><br />
# the first jack port goes to an output we do not use and there are no recording devices<br />
pcm.!jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_2<br />
1 system:playback_3<br />
}<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
You need not restart your computer or anything. Just edit the alsa config files, start up jack, and there you go...<br />
<br />
Remember to start it as a '''user'''. If you start it with {{ic|jackd -d alsa}} as user X, it will not work for user Y.<br />
<br />
Another approach, using ALSA loopback device (more complex but probably more robust), is described in [https://alsa.opensrc.org/Jack_and_Loopback_device_as_Alsa-to-Jack_bridge this article].<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer requires the {{pkg|gst-plugins-good}} package to work with JACK, which contains the jackaudiosink plugin that adds JACK playback support.<br />
<br />
Further information (outdated): https://jackaudio.org/faq/gstreamer_via_jack.html<br />
<br />
=== PulseAudio ===<br />
<br />
If you need to keep [[PulseAudio]] installed (in the event it is required by other packages, like {{Pkg|gnome-settings-daemon}}), you may want to prevent it from spawning automatically with X and taking over from JACK.<br />
<br />
Edit {{ic|/etc/pulse/client.conf}}, uncomment "autospawn" and set it to "no":<br />
;autospawn = yes<br />
autospawn = no<br />
<br />
''If you want both to play along, see: [[PulseAudio/Examples#PulseAudio through JACK]]''<br />
<br />
Cadence and other JACK GUI applications are known to write values to {{ic|~/.pulse/daemon.conf}}. These values override any system-wide defaults enabling unexpected behavior (e.g. flat volumes). Refer to [[PulseAudio#Configuration]] on how to update these configurations.<br />
<br />
=== Firewire ===<br />
<br />
In order to prevent ALSA from messing around with your firewire devices you have to blacklist all firewire related kernel modules. This also prevents PulseAudio from using firewire. Create the following file:<br />
<br />
{{hc|/etc/modprobe.d/alsa-no-jack.conf|<br />
blacklist snd-fireworks<br />
blacklist snd-bebob<br />
blacklist snd-oxfw<br />
blacklist snd-dice<br />
blacklist snd-firewire-digi00x<br />
blacklist snd-firewire-tascam<br />
blacklist snd-firewire-lib<br />
blacklist snd-firewire-transceiver<br />
blacklist snd-fireface<br />
blacklist snd-firewire-motu<br />
}}<br />
<br />
''The list of modules is the most recent available at the time of writing at [https://github.com/takaswie/snd-firewire-improve Alsa Firewire Improve Repository].''<br />
<br />
Now you can unload your loaded firewire modules or reboot.<br />
<br />
=== Network / remote audio ===<br />
<br />
JACK can be configured to send audio data over a network to a "master" machine, which then outputs the audio to a physical device. This can be useful to mix audio from a number of "slave" computers without requiring additional cables or hardware mixers, and keeping the audio path digital for as long as possible (as hardware mixers with digital inputs are very rare).<br />
<br />
The configuration is very simple, however it requires a network that supports multicast traffic (i.e. IGMP snooping must be enabled on managed network switches), and it requires all machines be running the same JACK major version (JACK1 or JACK2) as the protocols are not interoperable between versions. For JACK2, the {{ic|netmanager}} module must be loaded:<br />
<br />
{{bc|<nowiki><br />
master$ jack_load netmanager -i -c<br />
</nowiki>}}<br />
<br />
The {{ic|-i -c}} option tells the netmanager to automatically map any incoming connections to the default audio device. Without this, each incoming connection would have to be manually mapped on each connection. You can use {{ic|-i -h}} instead to see all available options, however note that the options are printed in the {{ic|jackd}} server output, the {{ic|jack_load}} command will not show anything.<br />
<br />
On the client, JACK must be started in network mode:<br />
<br />
{{bc|<nowiki><br />
slave$ jackd -d net<br />
</nowiki>}}<br />
<br />
The two machines will connect and on the master the new audio source will be visible:<br />
<br />
{{bc|<nowiki><br />
master$ jack_lsp<br />
system:playback_1<br />
system:playback_2<br />
remotehost:from_slave_1<br />
remotehost:from_slave_2<br />
</nowiki>}}<br />
<br />
If you passed the {{ic|-c}} option to {{ic|jack_load}} as above, then the remote system will now be able to play audio.<br />
<br />
== Troubleshooting ==<br />
<br />
=== "Cannot lock down memory area (Cannot allocate memory)" message on startup ===<br />
<br />
See [[Realtime process management#Configuring PAM]] and ensure that the user is in the {{ic|realtime}} [[user group]].<br />
<br />
=== jack2 and qjackctl errors ===<br />
<br />
Still having the "Cannot allocate memory" and/or "Cannot connect to server socket err = No such file or directory" error(s) when pressing qjackctl's start button?<br />
<br />
Please delete {{ic|~/.jackdrc}}, {{ic|~/.config/jack/conf.xml}}, {{ic|~/.config/rncbc.org/QjackCtl.conf}}. Kill ''jackdbus'' and restart from scratch :)<br />
(Thanks to nedko)<br />
<br />
Also try running <br />
$ fuser /dev/snd/*<br />
and check the resulting PID's with<br />
$ ps ax | grep [PID here]<br />
This will hopefully show the conflicting programs.<br />
<br />
=== "ALSA: cannot set channel count to 1 for capture" error in logs ===<br />
<br />
Change ALSA input and output channels from 1 to 2<br />
<br />
=== Crackling or pops in audio ===<br />
<br />
Your CPU or sound card is too weak to handle your settings for JACK. Lower the bitrate, lower the frame size, and raise the frame period in small increments until crackling stops. You can also try changing the sampling rate to 44100 or whatever is natively supported. This allows jack to send audio to the system without having to resample. In {{Pkg|jack2}} with {{ic|jack_control}}, this is accomplished with<br />
<br />
jack_control dps rate 44100<br />
<br />
=== Problems with specific applications ===<br />
<br />
==== VLC - no audio after starting JACK ====<br />
<br />
Run VLC and change the following menu options:<br />
* Tools > Preferences<br />
* Show settings: All<br />
* Audio > Output modules > Audio output module: JACK audio output<br />
* Audio > Output modules > JACK: Automatically connect to writable clients (enable)<br />
<br />
== See also ==<br />
<br />
* [https://github.com/jackaudio/jackaudio.github.com/wiki JACK Wiki]<br />
** [https://github.com/jackaudio/jackaudio.github.com/wiki/Differences-between-jack1-and-jack2 Differences between JACK 1 and JACK2]<br />
* [https://jackaudio.org/faq/ JACK FAQ]<br />
* [https://github.com/jackaudio/a2jmidid a2jmidid source code]<br />
* [https://github.com/jackaudio/jack1 jack1 source code]<br />
* [https://github.com/jackaudio/jack2 jack2 source code]<br />
* [https://github.com/jackaudio/jack-example-tools jack-example-tools source code]<br />
* [ircs://irc.libera.chat/jack #jack — JACK IRC channel]</div>Milkhttps://wiki.archlinux.org/index.php?title=VCV_Rack&diff=706077VCV Rack2021-12-16T14:20:32Z<p>Milk: /* Oscilloscope */ add Cardinal note</p>
<hr />
<div>[[Category:Music]]<br />
{{Style|More a scratchpad than an article}}<br />
<br />
[https://vcvrack.com VCV Rack] is a modular analogue synthesizer, more precisely a Virtual Eurorack DAW. It uses a plug-in systems to add more Eurorack emulated modules. As hardware Eurorack, it can be connected to midi, audio sources and destination, and other Eurorack modules. See also [[Wikipedia:VCV Rack]]. VCV Rack allow input from computer keyboard too, via the rack module MIDI-CV (included in "fundamental" modules pack).<br />
<br />
The main principle of a modular analogue synthesizer is to add several module in the rack, and connect the different modules with wires, here by clicking on a connector and dragging in into another connector. Buttons on the modules allow you to change specifics parameters of the module.<br />
<br />
== Installation ==<br />
<br />
[[Install]] {{AUR|vcvrack}}. This only has a few modules, the "Fundamental" modules that are generally shipped with VCV Rack must be installed from the {{AUR|vcvrack-fundamental}} package.<br />
<br />
Modules are installed by packages in {{ic|/opt/vcvrack/}}, fundamental is automatically detected by VCV Rack at launch time and installed in the user {{ic|~/.Rack/plugins-v1/}} directory. That's not the case for other modules packages.<br />
<br />
So to complete a modules package installation.<br />
<br />
# Install the AUR package<br />
# {{ic|cd ~/.Rack/plugins-v1}}<br />
# {{ic|unzip /opt/vcvrack/$Module.zip}}<br />
<br />
The new modules package will then be detected and available inside the application.<br />
<br />
Modules packages that are compatibles with VCV Rack 1.1.6+ version are:<br />
* {{AUR|vcvrack-befaco-git}}<br />
* {{AUR|vcvrack-eseries-git}}<br />
* {{AUR|vcvrack-mental-git}}<br />
<br />
They both depends on {{AUR|vcvrack}} package, not on the {{AUR|vcvrack-git}} version.<br />
<br />
== Using computer keyboard Input ==<br />
<br />
To use computer keyboard Input:<br />
* add the MIDI-CV module in your virtual Rack<br />
* Click on the middle line on the screen of the module.<br />
* Choose QWERTY keyboard for virtual piano keyboard<br />
* Choose Numpad keyboard for virtual percussion keyboard<br />
You can add two (or more) times the module, to have QWERTY part controlling some part of your setup and Numpad controlling some other part for example.<br />
<br />
== Using computer audio input and output ==<br />
<br />
The Audio-8 (8 channels) and Audio-16 (16 channels) modules, from "Fundamental" modules pack, allow to input and output audio to [[JACK]], [[PulseAudio]], [[ALSA]] or (MIDI) Bridge Output. To set the desired Input or Ouput:<br />
* Choose the desired sound library on the first line of the screen of the virtual module<br />
* Select the Input or Output port on the Second line.<br />
<br />
For using audio Input source into the modular setup use the "From device" connectors<br />
For using audio Ouput destination, from the modular setup, use the "To device" connectors.<br />
<br />
== Oscilloscope ==<br />
<br />
The Scope module, allow you to see the signal, from any part of the setup, and then allows to debug the setup.<br />
<br />
== See also ==<br />
* https://github.com/DISTRHO/Cardinal - DPF-based Rack wrapper that uses compiled-in modules and provides LV2/VST plugins plus a JACK app.</div>Milkhttps://wiki.archlinux.org/index.php?title=JACK_Audio_Connection_Kit&diff=651981JACK Audio Connection Kit2021-02-11T23:29:41Z<p>Milk: /* GUI */ put audio config apps together, patch apps together</p>
<hr />
<div>[[Category:Sound]]<br />
[[fr:Jack]]<br />
[[es:JACK Audio Connection Kit]]<br />
[[ja:JACK Audio Connection Kit]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|Professional audio}}<br />
{{Related articles end}}<br />
From [[Wikipedia:JACK Audio Connection Kit]]:<br />
:JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API. <br />
<br />
==Installation==<br />
In order for JACK to work properly, your user needs to be [[Users and groups#Group management|added]] to the {{ic|realtime}} group for access to higher ulimits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} (provided by the {{Pkg|realtime-privileges}} package), which is needed for realtime audio processing.<br />
{{Note|You need to manually add your user to the {{ic|realtime}} group even if you're using logind, since logind just handles access to direct hardware.}}<br />
<br />
There are two JACK implementations, see [https://github.com/jackaudio/jackaudio.github.com/wiki/Differences-between-jack1-and-jack2 this comparison] for the difference between the two. In short, Jack 1 and Jack 2 are equivalent implementations of the same protocol. Programs compiled against Jack 1 will work with Jack 2 without recompile (and vice versa). <br />
<br />
===JACK2===<br />
'''JACK2''' is a C++ implementation with SMP support. [[Install]] it with the {{Pkg|jack2}} package. For 32-bit application support, also install the {{Pkg|lib32-jack2}} package from the [[multilib]] repository. To use the ''jack_control'' command, also install the {{Pkg|jack2-dbus}} package.<br />
<br />
===JACK===<br />
'''JACK''' uses a C API and supports more than one soundcard on Linux (plus MIDI). [[Install]] it with the {{pkg|jack}} package. For 32-bit application support, also install the {{Pkg|lib32-jack}} package from the [[multilib]] repository.<br />
<br />
===GUI===<br />
* {{App|QjackCtl|Simple Qt application to control the JACK sound server daemon.|https://qjackctl.sourceforge.io/|{{Pkg|qjackctl}}}}<br />
* {{App|Cadence|Set of tools useful for audio production. It performs system checks, manages JACK, calls other tools and make system tweaks.|https://kx.studio/Applications:Cadence|{{Pkg|cadence}}}}<br />
* {{App|Studio-Controls|A JACK audio setup utility with USB device and PulseAudio bridges.|https://github.com/ovenwerks/studio-controls/|{{AUR|studio-controls-git}}}}<br />
* {{App|Carla|Fully-featured plugin host, with support for many audio drivers and plugin formats.|https://kx.studio/Applications:Carla|{{Pkg|carla}}}}<br />
* {{App|Patchage|Modular patch bay for audio and MIDI systems based on JACK and ALSA.|https://drobilla.net/software/patchage|{{Pkg|patchage}}}}<br />
* {{App|PatchMatrix|JACK patch bay in flow matrix style.|https://git.open-music-kontrollers.ch/lad/patchmatrix/about/|{{Pkg|patchmatrix}}}}<br />
<br />
==Basic Configuration==<br />
<br />
===Overview===<br />
The right configuration for your hardware and application needs depends on several factors. Your sound card and CPU will heavily affect how low of latency you can achieve when using JACK.<br />
<br />
The mainline Linux kernel now supports realtime scheduling, so using a patched kernel is no longer necessary. However, {{AUR|linux-rt}} in the AUR is a patched kernel that has some extra patches that can help to get lower latencies.<br />
<br />
===A shell-based example setup===<br />
JACK2 can be directly launched with the ''jackd'' executable, or controlled with the D-Bus-based ''jack_control'' binary. ''jack_control'' makes it easy to start and configure JACK2 via a shell script. Note that you must install the {{Pkg|jack2-dbus}} package to use ''jack_control''.<br />
<br />
Create a shell script that can be executed at X login:<br />
<br />
{{hc|start_jack.sh|<br />
#!/bin/bash<br />
<br />
jack_control start<br />
jack_control ds alsa<br />
jack_control dps device hw:HD2<br />
jack_control dps rate 48000<br />
jack_control dps nperiods 2<br />
jack_control dps period 64<br />
sleep 10<br />
a2j_control --ehw<br />
a2j_control --start<br />
sleep 10<br />
qjackctl &<br />
}}<br />
<br />
The above will start a working JACK instance which other programs can then utilize. Details of each line follow. When discovering your own best configuration, it is helpful to do trial and error using QjackCtl's GUI with a non-D-Bus JACK2 version.<br />
<br />
====Details of the shell-based example setup====<br />
<br />
jack_control start<br />
Starts JACK if it is not already started.<br />
jack_control ds alsa<br />
Sets JACK to use the ALSA driver set.<br />
jack_control dps device hw:HD2<br />
Sets JACK to use ALSA-compatible sound card named HD2. One can find the names with {{ic|cat /proc/asound/cards}}. Most ALSA tutorials and default configurations use card numbers, but this can get confusing when external MIDI devices are in use; names make it easier.<br />
jack_control dps rate 48000<br />
Sets JACK to use 48000 khz sampling. Happens to work very well with this card. Some cards only do 44100, many will go much higher. The higher you go, the lower your latency, but the better your card and your CPU have to be, and software has to support this as well.<br />
jack_control dps nperiods 2<br />
Sets JACK to use 2 periods. 2 is right for motherboard, PCI, PCI-X, etc.; 3 for USB.<br />
jack_control dps period 64<br />
Sets JACK to use 64 frames per period. Lower is less latency, but the setting in this script gives 2.67 ms latency, which is nicely low without putting too much stress on the particular hardware this example was built for. If a USB sound system were in use it might be good to try 32. Anything less than 3-4 ms should be fine for realtime synthesis and/or FX, 5 ms is the smallest a human being can detect. QjackCtl will tell you how you are doing; at no-load, which means no clients attached, you will want a max of 3-5% CPU usage, and if you cannot get that without xruns (the red numbers which mean the system cannot keep up with the demands), you will have to improve your hardware.<br />
sleep 10<br />
Wait for the above to settle.<br />
a2j_control --ehw && a2j_control --start<br />
Start the ALSA-to-JACK MIDI bridge. Good for mixing in applications which take MIDI input through ALSA but not JACK.<br />
sleep 10<br />
Wait for the above to settle.<br />
qjackctl &<br />
Load QjackCtl. GUI configuration tells it to run in the system tray. It will pick up the JACK session started by D-Bus just fine, and very smoothly too. It maintains the patchbay, the connections between these applications and any other JACK-enabled apps to be started manually. The patchbay is set up using manual GUI, but connections pre-configured in the patchbay are automatically created by QjackCtl itself when apps are started.<br />
<br />
===A GUI-based example setup===<br />
This example setup utilizes a more GUI focused configuration and management of JACK<br />
<br />
* Install {{Pkg|jack2}} and {{Pkg|jack2-dbus}}.<br />
* Install {{Pkg|qjackctl}}, and tell your GUI window/desktop system to run it at startup.<br />
* Make sure QjackCtl is told to:<br />
** use the D-Bus interface,<br />
** run at startup,<br />
** save its configuration to the default location,<br />
** start the JACK audio server on application startup,<br />
** enable the system tray icon, and<br />
** start minimized to system tray.<br />
* Reboot.<br />
* After logging in, you will see QjackCtl in your system tray. Left-click on it.<br />
* Tweak settings in the QjackCtl GUI to lower latency. The Frame Size, Frame Buffer, and Bitrate settings all affect latency. Larger frame sizes lower latency, lower frame buffers lower latency, and higher bitrate settings lower latency, but all increase load on the sound card and your CPU. A Latency of about ~5ms is desirable for direct monitoring of instruments or microphones, as the latency begins to become perceptible at higher latencies.<br />
<br />
===An alternative GUI-based setup===<br />
<br />
If you use JACK for demanding tasks , but every now and then, it's possible to suspend a running pulseaudio session with QjackCtl just when you're using it. On a virgin config, modify the "Server prefix" option in the "Settings" > "Advanced" submenu, so that it states :<br />
<br />
pasuspender -- jackd<br />
<br />
<br />
The pulseaudio session should resume fine after you close QjackCtl. Tip courtesy of [https://bbs.archlinux.org/viewtopic.php?pid=1163340#p1163340 this post].<br />
<br />
===Playing nice with ALSA===<br />
<br />
{{Note|1=There are several bugs in {{Pkg|alsa-lib}} and {{Pkg|alsa-plugins}} 1.1.9-2 that will cause audio to not play or errors regarding buffers with this setup. Please read [https://bbs.archlinux.org/viewtopic.php?id=250116] for workarounds and potential solutions.}} <br />
To allow Alsa programs to play while jack is running you must install the jack plugin for alsa with {{Pkg|alsa-plugins}}.<br />
<br />
And enable it by editing (or creating) /etc/asound.conf (system wide settings) to have these lines if you have a simple 2-channel setup:<br />
{{bc|<nowiki><br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
If you have a different number of output/input channels or your first two channels aren't the ones you wish to route audio to, you cannot use the predefined jack pcm source from {{ic|/etc/alsa/conf.d/50-jack.conf}}, but rather something like:<br />
{{bc|<nowiki><br />
# the first jack port goes to an output we don't use and there are no recording devices<br />
pcm.!jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_2<br />
1 system:playback_3<br />
}<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
You need not restart your computer or anything. Just edit the alsa config files, start up jack, and there you go...<br />
<br />
Remember to start it as a '''user'''. If you start it with {{ic|jackd -d alsa}} as user X, it will not work for user Y.<br />
<br />
Another approach, using ALSA loopback device (more complex but probably more robust), is described in [https://alsa.opensrc.org/Jack_and_Loopback_device_as_Alsa-to-Jack_bridge this article].<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer requires the {{pkg|gst-plugins-good}} package to work with JACK, which contains the jackaudiosink plugin that adds JACK playback support.<br />
<br />
Further information (outdated): http://jackaudio.org/faq/gstreamer_via_jack.html<br />
<br />
=== PulseAudio ===<br />
If you need to keep {{Pkg|pulseaudio}} installed (in the event it is required by other packages, like {{Pkg|gnome-settings-daemon}}), you may want to prevent it from spawning automatically with X and taking over from JACK.<br />
<br />
Edit {{ic|/etc/pulse/client.conf}}, uncomment "autospawn" and set it to "no":<br />
;autospawn = yes<br />
autospawn = no<br />
<br />
''If you want both to play along, see: [[PulseAudio/Examples#PulseAudio through JACK]]''<br />
<br />
Cadence and other JACK GUI applications are known to write values to {{ic|~/.pulse/daemon.conf}}. These values override any system-wide defaults enabling unexpected behavior (e.g. flat volumes). Refer to [[PulseAudio#Configuration]] on how to update these configurations.<br />
<br />
=== Firewire ===<br />
In order to prevent ALSA from messing around with your firewire devices you have to blacklist all firewire related kernel modules. This also prevents PulseAudio from using firewire. Create the following file:<br />
<br />
{{hc|/etc/modprobe.d/alsa-no-jack.conf|<br />
blacklist snd-fireworks<br />
blacklist snd-bebob<br />
blacklist snd-oxfw<br />
blacklist snd-dice<br />
blacklist snd-firewire-digi00x<br />
blacklist snd-firewire-tascam<br />
blacklist snd-firewire-lib<br />
blacklist snd-firewire-transceiver<br />
blacklist snd-fireface<br />
blacklist snd-firewire-motu<br />
}}<br />
<br />
''The list of modules is the most recent available at the time of writing at [https://github.com/takaswie/snd-firewire-improve Alsa Firewire Improve Repository].''<br />
<br />
Now you can unload your loaded firewire modules or reboot.<br />
<br />
=== Network / remote audio ===<br />
<br />
JACK can be configured to send audio data over a network to a "master" machine, which then outputs the audio to a physical device. This can be useful to mix audio from a number of "slave" computers without requiring additional cables or hardware mixers, and keeping the audio path digital for as long as possible (as hardware mixers with digital inputs are very rare).<br />
<br />
The configuration is very simple, however it requires a network that supports multicast traffic (i.e. IGMP snooping must be enabled on managed network switches), and it requires all machines be running the same JACK major version (JACK1 or JACK2) as the protocols are not interoperable between versions. For JACK2, the {{ic|netmanager}} module must be loaded:<br />
<br />
{{bc|<nowiki><br />
master$ jack_load netmanager -i -c<br />
</nowiki>}}<br />
<br />
The {{ic|-i -c}} option tells the netmanager to automatically map any incoming connections to the default audio device. Without this, each incoming connection would have to be manually mapped on each connection. You can use {{ic|-i -h}} instead to see all available options, however note that the options are printed in the {{ic|jackd}} server output, the {{ic|jack_load}} command will not show anything.<br />
<br />
On the client, JACK must be started in network mode:<br />
<br />
{{bc|<nowiki><br />
slave$ jackd -d net<br />
</nowiki>}}<br />
<br />
The two machines will connect and on the master the new audio source will be visible:<br />
<br />
{{bc|<nowiki><br />
master$ jack_lsp<br />
system:playback_1<br />
system:playback_2<br />
remotehost:from_slave_1<br />
remotehost:from_slave_2<br />
</nowiki>}}<br />
<br />
If you passed the {{ic|-c}} option to {{ic|jack_load}} as above, then the remote system will now be able to play audio.<br />
<br />
==MIDI==<br />
<br />
JACK can handle one soundcard very well, and an arbitrary number of MIDI devices (connected e.g. via USB).<br />
If you start JACK and want to use a MIDI keyboard or a synthesizer or some other pure MIDI device, you have to start JACK with a proper soundcard (one that actually outputs or inputs PCM sound).<br />
As soon you have done that, you can connect the MIDI device. E.g. with QjackCtl ({{pkg|qjackctl}}), you click on the connect button and you will find your device listed under JACK-MIDI or ALSA-MIDI, depending on the driver.<br />
<br />
For JACK-MIDI, you may want to set the '''MIDI Driver''' to '''seq''' or '''raw''' in QjackCtl ''Setup > Settings''. This should make your MIDI device appear under the ''MIDI'' tab. You can also change the name of the client (from a generic "midi_capture_1" to something more descriptive), if you enable ''Setup > Display > Enable client/port aliases'' and then ''Enable client/port aliases editing (rename)''.<br />
<br />
For ALSA-MIDI, make sure to turn on '''Enable ALSA Sequencer support''' in QjackCtl ''Setup > Misc''. This will add the ''ALSA'' tab in QjackCtl ''Connect'' window where your MIDI controller will show up.<br />
<br />
{{Note| {{pkg|jack2}} does not come with bridging support for legacy ALSA MIDI only applications. Therefore {{pkg|a2jmidid}} is required [https://github.com/jackaudio/jack2/issues/362 until upstream achieves feature parity on this].}}<br />
For bridging ALSA-MIDI to JACK-MIDI, you may consider using a2jmidid ({{Pkg|a2jmidid}}). The following command will export all available ALSA MIDI ports to JACK MIDI ports:<br />
$ a2j_control --ehw && a2j_control --start<br />
They will be visible in QjackCtl under the ''MIDI'' tab labelled "a2j" client.<br />
You can automate starting of a2jmidid by adding to QjackCtl ''Setup > Options > Execute script after Startup'': {{ic|/usr/bin/a2j_control --ehw && /usr/bin/a2j_control --start}}<br />
{{note|When connecting MIDI keyboard controllers in QjackCtl, make sure to ''Expand All'' first and connect the desired ''Output Ports'' (below the ''Readable Clients'') to the ''Input Ports'' (below the ''Writable Clients''). As a shortcut, if you select a writable client instead of individual ports as your destination, it should connect all its currently displayed output ports underneath.}}<br />
<br />
*'''Q:''' What is the difference between JACK-MIDI and ALSA-MIDI?<br />
*'''A:''' The former has improved timing and sample accurate MIDI event alignment. It extends or may even replace the latter but at this point they both co-exist.<br />
<br />
To install some M-Audio MIDI keyboards, you will need the firmware package {{AUR|midisport-firmware}} in the [[AUR]]. Also, the snd_usb_audio module has to be available.<br />
For more information about specific USB MIDI devices, see http://alsa.opensrc.org/USBMidiDevices.<br />
<br />
==Troubleshooting==<br />
==="Cannot lock down memory area (Cannot allocate memory)" message on startup===<br />
<br />
See [[Realtime process management#Configuring PAM]] and ensure that the user is in the {{ic|realtime}} [[user group]].<br />
<br />
===jack2 and qjackctl errors===<br />
Still having the "Cannot allocate memory" and/or "Cannot connect to server socket err = No such file or directory" error(s) when pressing qjackctl's start button?<br />
<br />
Please delete {{ic|~/.jackdrc}}, {{ic|~/.config/jack/conf.xml}}, {{ic|~/.config/rncbc.org/QjackCtl.conf}}. Kill ''jackdbus'' and restart from scratch :)<br />
(Thanks to nedko)<br />
<br />
Also try running <br />
$ fuser /dev/snd/*<br />
and check the resulting PID's with<br />
$ ps ax | grep [PID here]<br />
This will hopefully show the conflicting programs.<br />
<br />
==="ALSA: cannot set channel count to 1 for capture" error in logs===<br />
Change ALSA input and output channels from 1 to 2<br />
<br />
===Crackling or pops in audio===<br />
Your CPU or sound card is too weak to handle your settings for JACK. Lower the bitrate, lower the frame size, and raise the frame period in small increments until crackling stops. You can also try changing the sampling rate to 44100 or whatever is natively supported. This allows jack to send audio to the system without having to resample. In {{Pkg|jack2}} with {{ic|jack_control}}, this is accomplished with<br />
<br />
jack_control dps rate 44100<br />
<br />
===Problems with specific applications===<br />
====VLC - no audio after starting JACK====<br />
Run VLC and change the following menu options:<br />
* Tools > Preferences<br />
* Show settings: All<br />
* Audio > Output modules > Audio output module: JACK audio output<br />
* Audio > Output modules > JACK: Automatically connect to writable clients (enable)<br />
<br />
==See also==<br />
* [https://github.com/jackaudio/jackaudio.github.com/wiki JACK Wiki]<br />
** [https://github.com/jackaudio/jackaudio.github.com/wiki/Differences-between-jack1-and-jack2 Differences between JACK 1 and JACK2]<br />
* [http://jackaudio.org/faq/ JACK FAQ]</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=639922Professional audio2020-10-27T22:28:40Z<p>Milk: /* See also */ * [https://bbs.archlinux.org/viewforum.php?id=32 Multimedia and Games / Arch Linux Forums]</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
<br />
# echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
# echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|2=<br />
vm.swappiness = 10<br />
}}<br />
<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|2=<br />
fs.inotify.max_user_watches = 600000<br />
}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
<br />
$ setpci -v -d *:* latency_timer='''b0'''<br />
# setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer='''ff'''<br />
<br />
E.g. {{ic|1=SOUND_CARD_PCI_ID=03:00.0}}.<br />
<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
<br />
{{hc|$ lspci {{!}} grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)<br />
}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
<br />
$ cat /proc/asound/card0/codec#0<br />
<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/index.php/Juju_Migration new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEMPT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST (Virtual Studio Technology) since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that do not need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a post in LAU by Frank Kober[http://lalists.stanford.edu/lau/2009/10/0467.html]).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCMs to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
=== Tascam US-122 ===<br />
<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|2=<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"<br />
}}<br />
<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
$ grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/training-tutorials/build-serious-multimedia-production-workstation-arch-linux/ Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
On [https://freenode.net/ freenode]:<br />
* #archlinux-proaudio - Arch Linux pro-audio channel<br />
* #lau - General Linux Audio channel for users<br />
* #lad - General Linux Audio channel for developers<br />
* #jack - Development and support related to JACK audio system<br />
* #lv2 - Development and support related to the LV2 plugin format<br />
* #ardour - Discussion and support relating to the Ardour DAW<br />
* #opensourcemusicians - Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* AUR meta packages: {{AUR|proaudio-meta}}, {{AUR|soundfonts-aur-meta}}, {{AUR|lv2-plugins-aur-meta}}<br />
* User repositories: [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [https://bbs.archlinux.org/viewforum.php?id=32 Multimedia and Games / Arch Linux Forums]<br />
* [http://archaudio.org ArchAudio]{{Dead link|2020|10|20|status=Site shows a blank page. live in the DNS: https://domain-status.com/www/archaudio.org.}} - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=634815Nextcloud2020-09-09T19:23:55Z<p>Milk: add php-fpm path perm note re update</p>
<hr />
<div>[[Category:File sharing]]<br />
[[Category:Web applications]]<br />
[[fr:Owncloud]]<br />
[[ja:Nextcloud]]<br />
{{Related articles start}}<br />
{{Related|Apache HTTP Server}}<br />
{{Related|Nginx}}<br />
{{Related|OpenSSL}}<br />
{{Related|WebDAV}}<br />
{{Related articles end}}<br />
<br />
From [[Wikipedia:Nextcloud]]:<br />
<br />
:Nextcloud is a suite of client-server software for creating and using file hosting services. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server. In contrast to proprietary services like Dropbox, the open architecture allows adding additional functionality to the server in form of applications.<br />
<br />
Nextcloud is a fork of ownCloud. For differences between the two, see [[wikipedia:Nextcloud#Differences from ownCloud]].<br />
<br />
== Prerequisites ==<br />
<br />
Nextcloud requires several components:[https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server]<br />
<br />
* A web server: [[Apache HTTP Server]] or [[nginx]]<br />
* A database: [[MariaDB]]/MySQL, [[PostgreSQL]], [[SQLite]] or [[Oracle Database]]<br />
* [[PHP]] with [[#PHP setup|additional modules]]<br />
<br />
These will be configured in [[#Setup]].<br />
<br />
Make sure the required components are installed before proceeding.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|nextcloud}} package.<br />
<br />
=== Pacman hook ===<br />
<br />
To upgrade the Nextcloud database automatically on updates, you may want to create a [[pacman hook]]:<br />
<br />
{{hc|/etc/pacman.d/hooks/nextcloud.hook|2=<br />
[Trigger]<br />
Operation = Install<br />
Operation = Upgrade<br />
Type = Package<br />
Target = nextcloud<br />
Target = nextcloud-app-*<br />
<br />
[Action]<br />
Description = Update Nextcloud installation<br />
When = PostTransaction<br />
Exec = /usr/bin/runuser -u http -- /usr/bin/php /usr/share/webapps/nextcloud/occ upgrade<br />
}}<br />
<br />
== Setup ==<br />
<br />
As stated above, in order to set up Nextcloud, you must set up the appropriate PHP requirements;<br />
additionally, you must configure a database and a webserver.<br />
<br />
=== PHP setup ===<br />
<br />
{{Tip|For all prerequisite PHP modules, see [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#prerequisites-label upstream documentation].}}<br />
<br />
Make sure that {{ic|session.save_path}} is configured. Install [[PHP#gd]] and {{pkg|php-intl}} as additional modules. Configure [[PHP#OPCache|OPcache]] as recommended by [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache the documentation].<br />
<br />
Some apps (e.g. ''News'') require the {{ic|iconv}} extension. If you wish to use these apps, uncomment the extension in {{ic|/etc/php/php.ini}}.<br />
<br />
Depending on which database backend will be used:<br />
<br />
* For [[MySQL]], see [[PHP#MySQL/MariaDB]].<br />
* For [[PostgreSQL]], see [[PHP#PostgreSQL]].<br />
* For [[SQLite]], see [[PHP#Sqlite]].<br />
<br />
Performance may be improved through the implementation of [[PHP#Caching|caching]], see [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html Configuring Memory Caching] on the official documentation for details.<br />
<br />
=== Database setup ===<br />
<br />
An SQL database must be set up and used for your Nextcloud installation. After setting up the database here,<br />
you will be prompted for its information when you first create an administrator account.<br />
<br />
==== MariaDB ====<br />
<br />
{{Note|Create or convert the database with MySQL 4-byte support in order to use Emojis (textbased smilies) on your Nextcloud server [https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/mysql_4byte_support.html].}}<br />
<br />
If you want to use Emojis, replace the following CREATE DATABASE... with:<br />
{{bc|mysql> CREATE DATABASE '''nextcloud''' DEFAULT CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';}}<br />
<br />
It is recommended to set up an own database and user when using [[MariaDB]]:<br />
<br />
{{hc|$ mysql -u root -p|2=<br />
mysql> CREATE DATABASE '''nextcloud''' DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';<br />
mysql> GRANT ALL PRIVILEGES ON '''nextcloud'''.* TO ''''nextcloud''''@'localhost' IDENTIFIED BY ''''password'''';<br />
mysql> FLUSH PRIVILEGES;<br />
mysql> \q<br />
}}<br />
<br />
==== PostgreSQL ====<br />
<br />
The following is an example of setting up a [[PostgreSQL]] user and database:<br />
<br />
{{hc|1=[postgres]$ createuser -h localhost -P nextcloud|2=<br />
Enter password for new role:<br />
Enter it again:<br />
}}<br />
<br />
[postgres]$ createdb -O nextcloud nextcloud<br />
<br />
=== Web server setup ===<br />
<br />
{{Warning|It is recommended to use HTTPS instead of plain HTTP, see [[Apache HTTP Server#TLS]] or [[Nginx#TLS]] for examples and implement this in the examples given below.}}<br />
<br />
Depending on which [[web server]] you are using, further setup is required, indicated below.<br />
<br />
==== Apache ====<br />
<br />
If you have not already, install [[Apache HTTP Server]] and install and enable [[Apache HTTP Server#PHP|Apache's PHP module]]<br />
<br />
Copy the Apache configuration file to the configuration directory:<br />
<br />
# cp /etc/webapps/nextcloud/apache.example.conf /etc/httpd/conf/extra/nextcloud.conf<br />
<br />
Modify the file according to your preferences. By default it includes an alias for {{ic|/nextcloud}} pointing to {{ic|/usr/share/webapps/nextcloud}}.<br />
<br />
And include it in {{ic|/etc/httpd/conf/httpd.conf}}:<br />
<br />
Include conf/extra/nextcloud.conf<br />
<br />
Ensure that the root location of your Nextcloud installation (e.g., {{ic|/usr/share/webapps/nextcloud}}) is accessible by the webserver's user {{ic|http}}.<br />
<br />
Now restart Apache ({{ic|httpd.service}}).<br />
<br />
===== WebDAV =====<br />
<br />
Nextcloud comes with its own [[WebDAV]] implementation enabled, which may conflict with the one shipped with Apache. If you have enabled WebDAV in Apache (not enabled by default), disable the modules {{ic|mod_dav}} and {{ic|mod_dav_fs}} in {{ic|/etc/httpd/conf/httpd.conf}}. See [https://forum.owncloud.org/viewtopic.php?f=17&t=7240] for details.<br />
<br />
==== Nginx ====<br />
<br />
Make sure PHP-FPM has been configured correctly as described in [[Nginx#FastCGI]]. Uncomment {{ic|1=env[PATH]}} in {{ic|/etc/php/php-fpm.d/www.conf}} as it is required by Nextcloud.<br />
<br />
Remember to set up {{ic|1=env[TMP]}} in {{ic|/etc/php/php-fpm.d/www.conf}} and make sure the directory is writable from the Nginx user.<br />
<br />
Create a [[Nginx#Server_blocks|server block]] and add the content according to the [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html Nextcloud documentation]:<br />
<br />
{{Note|Use {{ic|unix:/run/php-fpm/php-fpm.sock;}} as {{ic|server}} in the {{ic|upstream php-handler}} block if you use the default configuration of {{Pkg|php-fpm}}.}}<br />
{{Note|Use {{ic|/usr/share/webapps/nextcloud}} as {{ic|root}} location when using {{Pkg|nextcloud}}.}}<br />
<br />
==== lighttpd ====<br />
<br />
Enable [[lighttpd#FastCGI]], e.g. by adding {{ic|code=server.modules += ( "mod_fastcgi" )}} to {{ic|/etc/lighttpd/lighttpd.conf}}.<br />
<br />
Create a link to {{ic|/usr/share/webapps/nextcloud}} in your {{ic|/srv/http/}} directory (or configured root).<br />
<br />
=== Create data storage directory ===<br />
<br />
Nextcloud needs a directory to store all user files, which has to be writable for the web server. It is recommended to put this directory somewhere outside of {{ic|/usr}}, e.g. {{ic|/var/nextcloud}}.<br />
<br />
{{Note|Replace {{ic|http}} when using a different [[user]]/[[user group]] for the web server.}}<br />
<br />
# mkdir /var/nextcloud<br />
# chown http:http /var/nextcloud<br />
# chmod 750 /var/nextcloud<br />
<br />
=== Fix apps directory permissions ===<br />
<br />
To give the web server read/write access to the ''apps'' directory (e.g. on "Cannot write into "apps" directory"), setup the correct permissions:<br />
<br />
{{Note|Replace {{ic|http}} when using a different [[user]]/[[user group]] for the web server.}}<br />
<br />
# mkdir -p /usr/share/webapps/nextcloud/data<br />
# chown -R http:http /usr/share/webapps/nextcloud/{apps,data}<br />
# chmod 750 /usr/share/webapps/nextcloud/{apps,data}<br />
<br />
=== Explicitly permit Nextcloud directories for php-fpm ===<br />
Since version 7.4 php-fpm is hardened per default and revokes read/write access on {{ic|/usr}} (and sub-directories). Therefore it is also necessary to explicitly give permissions on {{ic|/usr/share/webapps/nextcloud}} directories and the Nextcloud data directory ({{ic|/var/nextcloud}} in the example above).<br />
<br />
Create an {{ic|override.conf}} for {{ic|php-fpm}}:<br />
# systemctl edit php-fpm.service<br />
<br />
Add and save following content.<br />
{{hc|/etc/systemd/system/php-fpm.service.d/override.conf|2=<br />
[Service]<br />
ReadWritePaths = /usr/share/webapps/nextcloud/apps<br />
ReadWritePaths = /usr/share/webapps/nextcloud/data<br />
ReadWritePaths = /etc/webapps/nextcloud/config<br />
<br />
# Replace the following path with the Nextcloud data directory<br />
ReadWritePaths = /var/nextcloud<br />
}}<br />
<br />
Afterwards [[restart]] the {{ic|php-fpm}} service. {{ic|<nowiki>ReadWritePaths = /usr/share/webapps/nextcloud/</nowiki>}} is also required for the internal Nextcloud update process.<br />
<br />
== Initialize ==<br />
<br />
Open the address where you have installed Nextcloud in a web browser (e.g., https://www.example.com/nextcloud). Enter the database details and the location of the data directory (e.g. {{ic|/var/nextcloud}}) set up above.<br />
<br />
If you get the error message "Cannot write into "apps" directory", make sure you followed [[#Fix apps directory permissions]] above.<br />
<br />
=== Configure caching ===<br />
<br />
It is recommended to [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html enable caching]. The Nextcloud documentation provides instructions on [[Redis]], Memcached and [[PHP#APCu|APCu]].<br />
<br />
== Security Hardening ==<br />
<br />
See the [https://docs.nextcloud.com/server/latest/admin_manual/installation/harden_server.html Nextcloud documentation] and [[Security]]. Nextcloud additionally provides a [https://scan.nextcloud.com/ Security scanner].<br />
<br />
=== uWSGI ===<br />
<br />
You can run Nextcloud in its own process and service by using the [[uWSGI]] application server with {{pkg|uwsgi-plugin-php}}. This allows you to define a [[PHP#Configuration|PHP configuration]] only for this instance of PHP, without the need to edit the global {{ic|php.ini}} and thus keeping your web application configurations compartmentalized. ''uWSGI'' itself has a wealth of features to limit the resource use and to harden the security of the application, and by being a separate process it can run under its own user.<br />
<br />
The only part that differs from [[#Nginx]] is the {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} block:<br />
<br />
{{bc|<nowiki><br />
location ~ \.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/nextcloud.sock;<br />
}<br />
</nowiki>}}<br />
<br />
Then create a config file for ''uWSGI'':<br />
<br />
{{hc|/etc/uwsgi/nextcloud.ini|<nowiki><br />
[uwsgi]<br />
; load the required plugins<br />
plugins = php<br />
; force the sapi name to 'apache', this will enable the opcode cache <br />
php-sapi-name = apache<br />
<br />
; set master process name and socket<br />
; '%n' refers to the name of this configuration file without extension<br />
procname-master = uwsgi %n<br />
master = true<br />
socket = /run/uwsgi/%n.sock<br />
<br />
; drop privileges<br />
uid = http<br />
gid = http<br />
umask = 027<br />
<br />
; run with at least 1 process but increase up to 4 when needed<br />
processes = 4<br />
cheaper = 1<br />
<br />
; reload whenever this config file changes<br />
; %p is the full path of the current config file<br />
touch-reload = %p<br />
<br />
; disable uWSGI request logging<br />
;disable-logging = true<br />
<br />
; enforce a DOCUMENT_ROOT<br />
php-docroot = /usr/share/webapps/%n<br />
; limit allowed extensions<br />
php-allowed-ext = .php<br />
; and search for index.php if required<br />
php-index = index.php<br />
<br />
; set php configuration for this instance of php, no need to edit global php.ini<br />
php-set = date.timezone=Etc/UTC<br />
;php-set = open_basedir=/tmp/:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom<br />
php-set = expose_php=false<br />
; avoid security risk of leaving sessions in world-readable /tmp<br />
php-set = session.save_path=/usr/share/webapps/nextcloud/data<br />
<br />
; port of php directives set upstream in /usr/share/webapps/nextcloud/.user.ini for use with PHP-FPM<br />
php-set = upload_max_filesize=513M<br />
php-set = post_max_size=513M<br />
php-set = memory_limit=512M<br />
php-set = output_buffering=off<br />
<br />
; load all extensions only in this instance of php, no need to edit global php.ini<br />
;; required core modules<br />
php-set = extension=gd<br />
php-set = extension=iconv<br />
;php-set = extension=zip # enabled by default in global php.ini<br />
<br />
;; database connectors<br />
;; uncomment your selected driver<br />
;php-set = extension=pdo_sqlite<br />
;php-set = extension=pdo_mysql<br />
;php-set = extension=pdo_pgsql<br />
<br />
;; recommended extensions<br />
;php-set = extension=curl # enabled by default in global php.ini<br />
php-set = extension=bz2<br />
php-set = extension=intl<br />
<br />
;; required for specific apps<br />
;php-set = extension=ldap # for LDAP integration<br />
;php-set = extension=ftp # for FTP storage / external user authentication<br />
;php-set = extension=imap # for external user authentication, requires php-imap<br />
<br />
;; recommended for specific apps<br />
;php-set = extension=exif # for image rotation in pictures app, requires exiv2<br />
;php-set = extension=gmp # for SFTP storage<br />
<br />
;; for preview generation<br />
;; provided by packages in AUR<br />
; php-set = extension=imagick<br />
<br />
; opcache<br />
php-set = zend_extension=opcache<br />
<br />
; user cache<br />
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini<br />
php-set = extension=apcu<br />
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL<br />
php-set = apc.ttl=7200<br />
php-set = apc.enable_cli=1<br />
<br />
; web server is already handling URL rewriting, so tell NextCloud not to repeat this<br />
env = front_controller_active=true<br />
<br />
cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/nextcloud/cron.php 1>/dev/null<br />
</nowiki>}}<br />
<br />
{{Note|1=<br />
* Do not forget to set your timezone and uncomment the required database connector in the uWSGI config file<br />
* The [[PHP#Configuration|open_basedir]] directive is optional and commented out. You can uncomment to harden security. Be aware that it may [https://github.com/owncloud/core/search?q=open_basedir&type=Issues occasionally break things].<br />
* Use {{ic|1=php-docroot = /usr/share/webapps}} if placing nextcloud in /nextcloud subdirectory.<br />
}}<br />
<br />
{{Warning|The way the [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html Nextcloud background job] is currently set up with [https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] will make use of the default global configuration from {{ic|/etc/php/php.ini}}. This means that none of the specific parameters defined (e.g. required modules) will be enabled, [https://github.com/owncloud/core/issues/12678#issuecomment-66114448 leading to various issues]. One solution is to copy {{ic|/etc/php/php.ini}} to e.g. {{ic|/etc/uwsgi/cron-php.ini}}, make the required modifications there (mirroring {{ic|/etc/uwsgi/nextcloud.ini}} parameters) and referencing it in the cron directive by adding the {{ic|-c /etc/uwsgi/cron-php.ini}} option to ''php'' invocation.}}<br />
<br />
==== Activation ====<br />
<br />
[[uWSGI]] provides a [[Systemd#Using_units|template unit]] that allows to start and enable application using their configuration file name as instance identifier. For example, [[start]]ing {{ic|uwsgi@nextcloud.socket}} would start it on demand referencing the configuration file {{ic|/etc/uwsgi/nextcloud.ini}}. <br />
<br />
To enable the uwsgi service by default at start-up, [[enable]] {{ic|uwsgi@nextcloud.socket}}.<br />
<br />
{{Note|Here we make use of [http://0pointer.de/blog/projects/socket-activation.html systemd socket activation] to prevent unnecessary resources consumption when no connections are made to the instance. If you would rather have it constantly active, simply remove the {{ic|.socket}} part to start and enable the service instead.}}<br />
<br />
See also [[UWSGI#Running uWSGI]].<br />
<br />
=== Setting strong permissions for the filesystem ===<br />
<br />
You should set the permissions for {{ic|config/}}, {{ic|data/}} and {{ic|apps/}} as strict possible. That means that your HTTP user (''http'' in case of {{pkg|apache}}) should own them, and the should have {{ic|700}} permissions. You can use the following script to achieve this.<br />
<br />
{{Style|Complex script for trivial one-time task.}}<br />
<br />
{{hc|oc-perms|2=<nowiki><br />
#!/bin/bash<br />
ocpath='/usr/share/webapps/nextcloud'<br />
htuser='http'<br />
htgroup='http'<br />
rootuser='root'<br />
<br />
printf "Creating possible missing Directories\n"<br />
mkdir -p $ocpath/data<br />
mkdir -p $ocpath/assets<br />
<br />
printf "chmod Files and Directories\n"<br />
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640<br />
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750<br />
<br />
printf "chown Directories\n"<br />
chown -R ${rootuser}:${htgroup} ${ocpath}/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/apps/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/assets/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/config/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/data/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/themes/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/updater/<br />
<br />
chmod +x ${ocpath}/occ<br />
<br />
printf "chmod/chown .htaccess\n"<br />
if [ -f ${ocpath}/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess<br />
fi<br />
if [ -f ${ocpath}/data/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/data/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess<br />
fi<br />
</nowiki>}}<br />
<br />
If you have customized your Nextcloud installation and your filepaths are different than the standard installation, then modify this script accordingly.<br />
<br />
== Synchronization ==<br />
<br />
=== Desktop ===<br />
<br />
The official client can be installed with the {{Pkg|owncloud-client}} or {{Pkg|nextcloud-client}} package.<br />
Alternative versions are available in the [[AUR]]: {{AUR|owncloud-client-git}}. All of them use {{Pkg|qtkeychain}} to store and retrieve account-specific access tokens. To achieve auto-login when the client starts, one of optional dependencies of ''qtkeychain'' should be installed as well. Moreover, if you choose {{Pkg|libsecret}} as the backend for ''qtkeychain'', a service that provides [https://www.archlinux.org/packages/?q=org.freedesktop.secrets org.freedesktop.secrets] should be running when the client starts.<br />
<br />
==== Calendar ====<br />
<br />
To access your Nextcloud calendars using Mozilla [[Thunderbird]]'s Lightning calendar you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME</nowiki><br />
<br />
To access your Nextcloud calendars using CalDAV-compatible programs like Kontact or [[Evolution]], you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav</nowiki><br />
<br />
For details see the [https://docs.nextcloud.com/server/latest/user_manual/pim/index.html official documentation].<br />
<br />
==== Contacts ====<br />
<br />
To sync contacts with [[Thunderbird]], see [https://docs.nextcloud.com/server/latest/user_manual/pim/sync_thunderbird.html these instructions] from the official doc.<br />
<br />
==== Mounting files with davfs2 ====<br />
<br />
If you want to mount your Nextcloud using WebDAV, install {{Pkg|davfs2}} (as described in [[davfs2]]).<br />
<br />
To mount your Nextcloud, use:<br />
<br />
# mount -t davfs https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount<br />
<br />
You can also create an entry for this in {{ic|/etc/fstab}}<br />
<br />
{{hc|/etc/fstab|<br />
https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount davfs rw,user,noauto 0 0<br />
}}<br />
<br />
{{Tip|In order to allow automount you can also store your username (and password if you like) in a file as described in [[davfs2#Storing credentials]].}}<br />
<br />
{{Note|If creating/copying files is not possible, while the same operations work on directories, see [[davfs2#Creating/copying files not possible and/or freezes]].}}<br />
<br />
=== Mounting files in GNOME Files (Nautilus) ===<br />
<br />
You can access the files directly in Nautilus ('+ Other Locations') through WebDAV protocol - use the link as shown in your Nextcloud installation Web GUI (typically: https://example.org/remote.php/webdav/) but replace the protocol name from 'https' to 'davs'. Nautilus will ask for user name and password when trying to connect.<br />
<br />
=== Android ===<br />
<br />
Download the official Nextcloud app from [https://play.google.com/store/apps/details?id=com.nextcloud.client Google Play] or [https://f-droid.org/packages/com.nextcloud.client/ F-Droid].<br />
<br />
To enable contacts and calendar sync (Android 4+):<br />
# download [https://www.davx5.com/ DAVx<sup>5</sup>] ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play Store], [https://f-droid.org/app/at.bitfire.davdroid F-Droid])<br />
# Enable mod_rewrite.so in httpd.conf<br />
# create a new DAVdroid account in the ''Account'' settings, and specify your "short" server address and login/password couple, e.g. {{ic|<nowiki>https://cloud.example.com</nowiki>}} (there is no need for the {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} part if you configured your web server with the proper redirections, as illustrated previously in the article; ''DAVdroid'' will find itself the right URLs)<br />
<br />
=== iOS ===<br />
<br />
Download the official Nextcloud app from the [https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Running NextCloud in a subdirectory ===<br />
<br />
By including the default {{ic|nextcloud.conf}} in {{ic|httpd.conf}}, nextCloud will take control of port 80 and your localhost domain. <br />
<br />
If you would like to have nextCloud run in a subdirectory, then <br />
<br />
For apache, edit the {{ic|/etc/httpd/conf/extra/nextcloud.conf}} you included and comment out the {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} part of the include file.<br />
<br />
For nginx, you can use the following config when using nextcloud with uwsgi:<br />
<br />
{{hc|head=/etc/nginx/conf.d/nextcloud.conf|output=<nowiki><br />
location = /.well-known/carddav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location = /.well-known/caldav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location /.well-known/acme-challenge { }<br />
<br />
location ^~ /nextcloud {<br />
<br />
root /usr/share/webapps;<br />
<br />
# set max upload size<br />
client_max_body_size 512M;<br />
fastcgi_buffers 64 4K;<br />
<br />
# Disable gzip to avoid the removal of the ETag header<br />
gzip off;<br />
<br />
# Uncomment if your server is build with the ngx_pagespeed module<br />
# This module is currently not supported.<br />
#pagespeed off;<br />
<br />
location /nextcloud {<br />
rewrite ^ /nextcloud/index.php$uri;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:updater|ocs-provider)(?:$|/) {<br />
try_files $uri/ =404;<br />
index index.php;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
}<br />
<br />
# Adding the cache control header for js and css files<br />
# Make sure it is BELOW the PHP block<br />
location ~* \.(?:css|js) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
add_header Cache-Control "public, max-age=7200";<br />
# Add headers to serve security related headers (It is intended<br />
# to have those duplicated to the ones above)<br />
# Before enabling Strict-Transport-Security headers please read<br />
# into this topic first.<br />
# add_header Strict-Transport-Security "max-age=15768000;<br />
# includeSubDomains; preload;";<br />
add_header X-Content-Type-Options nosniff;<br />
add_header X-Frame-Options "SAMEORIGIN";<br />
add_header X-XSS-Protection "1; mode=block";<br />
add_header X-Robots-Tag none;<br />
add_header X-Download-Options noopen;<br />
add_header X-Permitted-Cross-Domain-Policies none;<br />
# Optional: Do not log access to assets<br />
access_log off;<br />
}<br />
<br />
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
# Optional: Do not log access to other assets<br />
access_log off;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
{{Note| Do not forget to configure the {{ic |.well-known}} URLs for service discovery. For more information please see [https://docs.nextcloud.com/server/18/admin_manual/issues/general_troubleshooting.html#service-discovery General troubleshooting and service discovery section of Nextcloud documentation]. }}<br />
<br />
=== Docker ===<br />
<br />
See the [https://hub.docker.com/_/owncloud/ ownCloud] or [https://github.com/nextcloud/docker Nextcloud] repository for [[Docker]].<br />
<br />
=== Upload and share from File Manager ===<br />
<br />
[https://github.com/schiesbn/shareLinkCreator shareLinkCreator] provides the ability to upload a file to<br />
OwnCloud via a supported file manager and receive a link to the uploaded file which can then be emailed or shared in another way.<br />
<br />
=== Defining Background Jobs ===<br />
<br />
Nextcloud requires scheduled execution of some tasks, and by default it achieves this by using AJAX,<br />
however AJAX is the least reliable method, and it is recommended to use [[Cron]] instead. However,<br />
ArchLinux ships with {{Pkg|systemd}}, so the preferred way of executing scheduled tasks is a [[systemd timer]]. <br />
<br />
==== Manual install ====<br />
<br />
First create a service:<br />
<br />
{{hc|/etc/systemd/system/nextcloudcron.service|<nowiki><br />
[Unit]<br />
Description=Nextcloud cron.php job<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/php -f /usr/share/webapps/nextcloud/cron.php<br />
<br />
[Install]<br />
WantedBy=basic.target<br />
</nowiki>}}<br />
<br />
Then create a timer for that service:<br />
<br />
{{hc|/etc/systemd/system/nextcloudcron.timer|<nowiki><br />
[Unit]<br />
Description=Run Nextcloud cron.php every 15 minutes<br />
<br />
[Timer]<br />
OnBootSec=5min<br />
OnUnitActiveSec=15min<br />
Unit=nextcloudcron.service<br />
<br />
[Install]<br />
WantedBy=timers.target<br />
</nowiki>}}<br />
<br />
==== Activate timer ====<br />
<br />
[[Start/enable]] {{ic|nextcloudcron.timer}}.<br />
<br />
Confirm that it is running by running<br />
<br />
# systemctl list-timers<br />
<br />
==== AUR package ====<br />
<br />
Install {{AUR|nextcloud-systemd-timers}}.<br />
<br />
Provided services can be checked with:<br />
$ pacman -Ql nextcloud-systemd-timers<br />
<br />
For instance, to run the <code>cron.php</code> script every 15 minutes:<br />
# systemctl start nextcloud-cron.timer<br />
# systemctl enable nextcloud-cron.timer<br />
<br />
=== Collabora Online Office integration ===<br />
<br />
{{Expansion|What is the correct {{ic|domain}} (or {{ic|server_name}} in the config) when [[#Running NextCloud in a subdirectory|Nextcloud runs in a subdirectory]]?}}<br />
<br />
==== Solution with Docker ====<br />
<br />
The first, install a {{Pkg|docker}} package to provide collabora files and setup a Collabora server.<br />
<br />
[[Start/enable]] {{ic|docker.service}}.<br />
<br />
Then, download the official Docker image:<br />
<br />
# docker pull collabora/code<br />
<br />
And, installing a Collabora server. Make sure {{ic|cloud//.example//.com}} is your nextcloud's domain, not a collabora :<br />
<br />
# docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=cloud\\.example\\.com" --restart always --cap-add MKNOD collabora/code<br />
<br />
Also make sure to escape all dots with double backslashes (\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you will need to use 'domain=cloud\\.example\\.com\|second\\.example\\.com' instead. (All hosts are separated by \|.) When using `localhost` as domain for testing you need to add {{ic|--net host}} to ensure the docker container can access your Nextcloud server. <br />
<br />
If you need to delete or reinstall Collabora server use:<br />
<br />
For recognition CONTAINER_ID of server<br />
<br />
# docker ps<br />
<br />
Stop and delete<br />
<br />
# docker stop CONTAINER_ID<br />
# docker rm CONTAINER_ID<br />
<br />
Futher, follow the instruction of webserver you are using:<br />
<br />
'''Nginx setup example:'''<br />
<br />
Add following to your nextcloud domain config or add new config file in /etc/nginx/conf.d/ directory, (Do not forget to change {{ic|office.example.com}} and {{ic|ssl_certificate}} to the right values. If you are using docker image, change {{ic|http}} to {{ic|https}}.)<br />
<br />
{{hc|/etc/nginx/conf.d/example.conf|<nowiki><br />
upstream office.example.com {<br />
server 127.0.0.1:9980;<br />
}<br />
<br />
server {<br />
listen 443 ssl;<br />
server_name office.example.com;<br />
<br />
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;<br />
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;<br />
<br />
# static files<br />
location ^~ /loleaflet {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# WOPI discovery URL<br />
location ^~ /hosting/discovery {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# Main websocket<br />
location ~ /lool/(.*)/ws$ {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# Admin Console websocket<br />
location ^~ /lool/adminws {<br />
proxy_buffering off;<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# download, presentation and image upload<br />
location ~ /lool {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
Restart a nginx:<br />
<br />
# nginx -s reload<br />
<br />
or [[restart]] {{ic|nginx.service}}.<br />
<br />
'''Apache setup example:'''<br />
<br />
Add following to nextcloud config file. Do not forget to change to the right values<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|<nowiki><br />
<VirtualHost *:443><br />
ServerName office.nextcloud.com:443<br />
<br />
# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!<br />
SSLEngine on<br />
SSLCertificateFile /path/to/signed_certificate<br />
SSLCertificateChainFile /path/to/intermediate_certificate<br />
SSLCertificateKeyFile /path/to/private/key<br />
SSLProtocol all -SSLv2 -SSLv3<br />
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS<br />
SSLHonorCipherOrder on<br />
<br />
# Encoded slashes need to be allowed<br />
AllowEncodedSlashes NoDecode<br />
<br />
# Container uses a unique non-signed certificate<br />
SSLProxyEngine On<br />
SSLProxyVerify None<br />
SSLProxyCheckPeerCN Off<br />
SSLProxyCheckPeerName Off<br />
<br />
# keep the host<br />
ProxyPreserveHost On<br />
<br />
# static html, js, images, etc. served from loolwsd<br />
# loleaflet is the client part of LibreOffice Online<br />
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0<br />
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet<br />
<br />
# WOPI discovery URL<br />
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0<br />
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery<br />
<br />
# Main websocket<br />
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon<br />
<br />
# Admin Console websocket<br />
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws<br />
<br />
# Download as, Fullscreen presentation and Image upload operations<br />
ProxyPass /lool https://127.0.0.1:9980/lool<br />
ProxyPassReverse /lool https://127.0.0.1:9980/lool<br />
</VirtualHost><br />
</nowiki>}}<br />
<br />
After configuring these do restart your apache by [[restart]]ing {{ic|httpd.service}}.<br />
<br />
'''Install the Nextcloud app'''<br />
<br />
Go to the Apps section and choose “Office & Text”, install the “Collabora Online” app. In admin panel select Collabora Online tab and specific the server's domain you have setup before.<br />
<br />
==== Solution without Docker ====<br />
<br />
The {{AUR|collabora-online-server-nodocker}} package provides the Collabora Office (the desktop suite) and the “CODE” (Collabora Online Development Edition) server, which is based on “lool” (LibreOffice OnLine).<br />
<br />
Alter the {{ic|/etc/loolwsd/loolwsd.xml}} file, so that:<br />
<br />
* {{ic|config > server_name}} contains the host and port of the public Nextcloud address, separated by a colon (e.g. {{ic|example.org:443}}),<br />
* {{ic|config > ssl > enable}} is false (i.e. web browser —HTTPS→ proxy —HTTP→ loolwsd),<br />
* {{ic|config > ssl > termination}} is true (I suppose you’ll manage TLS at the proxy level),<br />
* {{ic|config > storage > wopi > host}} reflects the actual hostname (or pattern) of the proxy server (e.g. {{ic|(?:.*\.)?example\.org}}),<br />
* {{ic|config > admin_console > username}} and {{ic|config > admin_console > password}} are set to values of your choice.<br />
<br />
Then:<br />
<br />
* [[start]] and [[enable]] {{ic|loolwsd.service}};<br />
* configure Nginx by creating a [[Nginx#Server_blocks|server block]] including {{ic|/etc/nginx/snippets/loolwsd.conf}}, and restart it. Example with SSL (change {{ic|office.example.com}} and {{ic|ssl_certificate}} to the right values):<br />
<br />
{{hc|/etc/nginx/conf.d/example.conf|<nowiki><br />
server {<br />
listen 443 ssl;<br />
server_name office.example.com;<br />
<br />
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;<br />
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;<br />
<br />
include snippets/loolwsd.conf;<br />
}<br />
</nowiki>}}<br />
<br />
* in Nextcloud, install the "Collabora Online" app. In the admin panel select the Collabora Online tab and specify the server domain name you have just set up.<br />
<br />
== Troubleshooting ==<br />
{{Out of date|A lot of references to OwnCloud, are these still valid with Nextcloud?}}<br />
<br />
By default, the {{ic|nextcloud.log}} is available in {{ic|/usr/share/webapps/nextcloud/data/}}.<br />
<br />
=== Environment variables not available ===<br />
<br />
Uncomment the line in {{ic|/etc/php/php-fpm.d/www.conf}} as per [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#php-fpm-tips-label Nextcloud documentation]:<br />
env[PATH] = /usr/local/bin:/usr/bin:/bin<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
ownCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if WebDAV is enabled.<br />
If you use SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]], and access ownCloud's admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]] tutorial, execute the following steps:<br />
<br />
Create a local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{ic|ca-certificates}}-updates from overwriting it.<br />
<br />
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
# update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
=== Self-signed certificate for Android devices ===<br />
<br />
Once you have followed the setup for SSL, as on [[Apache HTTP Server#TLS]] for example, early versions of DAVdroid will<br />
reject the connection because the certificate is not trusted. A certificate can be made as follows on your server:<br />
<br />
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt<br />
# openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt <br />
<br />
The file {{ic|android.txt}} should contain the following:<br />
<br />
basicConstraints=CA:true<br />
<br />
Then import {{ic|CA.der.crt}} to your Android device:<br />
<br />
Put the {{ic|CA.der.crt}} file onto the sdcard of your Android device (usually to the internal one, e.g. save from a mail attachment).<br />
It should be in the root directory. Go to ''Settings > Security > Credential storage'' and select ''Install from device storage''.<br />
The {{ic|.crt}} file will be detected and you will be prompted to enter a certificate name. After importing the certificate,<br />
you will find it in ''Settings > Security > Credential storage > Trusted credentials > User''.<br />
<br />
Thanks to: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]{{Dead link|2020|04|01|status=404}}<br />
<br />
Another way is to import the certificate directly from your server via [https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid]{{Dead link|2020|04|01|status=404}} and follow the instructions there.<br />
<br />
=== Cannot write into config directory! ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes {{ic|/etc/webapps}}.<br />
<br />
Restart the web server to apply the change.<br />
<br />
If you are getting this error after an upgrade from Nextcloud 17 to Nextcloud 18, also see [[#Explicitly permit Nextcloud directories for php-fpm]].<br />
<br />
=== Cannot create data directory ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes the data directory.<br />
<br />
Restart the web server to apply the change.<br />
<br />
=== CSync failed to find a specific file. ===<br />
<br />
This is most likely a certificate issue. Recreate it, and do not leave the common name empty or you will see the error again.<br />
<br />
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed. To fix that, you can use the occ command as described<br />
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html here]. So with<br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:list<br />
<br />
you can list all apps (if you installed nextcloud in the standard directory), and with <br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:disable <nameOfExtension><br />
<br />
you can disable the troubling app.<br />
<br />
Alternatively, you can either use [[phpMyAdmin]] to edit the {{ic|oc_appconfig}} table (if you got lucky and the table has an edit option), or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes';<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic authentication, make sure to exclude "status.php", which must be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== GUI tray icon disappears, but client still running in the background ===<br />
<br />
After waking up from a suspended state, the Nextcloud client tray icon may disappear from the system tray. A workaround is to delay the startup of the client, as noted [https://github.com/nextcloud/desktop/issues/203#issuecomment-463957811 here]. This can be done with the .desktop file, for example:<br />
<br />
{{hc|.local/share/applications/nextcloud.desktop|<nowiki><br />
...<br />
Exec=bash -c 'sleep 5 && nextcloud'<br />
...<br />
</nowiki>}}<br />
<br />
=== Some files upload, but give an error 'Integrity constraint violation...' ===<br />
<br />
You may see the following error in the ownCloud sync client:<br />
<br />
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...<br />
<br />
This is caused by an issue with the File Locking app, which is often not sufficient to keep conflicts from occurring on some webserver configurations.<br />
A more complete [https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking]<br />
is available that rids these errors, but you must be using the Redis php-caching method. Install {{Pkg|redis}} and {{Pkg|php-redis}}, comment out<br />
your current php-cache mechanism, and then in {{ic|/etc/php/conf.d/redis.ini}} uncomment {{ic|1=extension=redis}}.<br />
Then in {{ic|config.php}} make the following changes:<br />
<br />
'memcache.local' => '\OC\Memcache\Redis',<br />
'filelocking.enabled' => 'true',<br />
'memcache.locking' => '\OC\Memcache\Redis',<br />
'redis' => array(<br />
'host' => 'localhost',<br />
'port' => 6379,<br />
'timeout' => 0.0,<br />
),<br />
<br />
and [[start/enable]] {{ic|redis.service}}.<br />
<br />
Finally, disable the File Locking App, as the Transational File Locking will take care of it (and would conflict).<br />
<br />
If everything is working, you should see 'Transactional File Locking Enabled' under Server Status on the Admin page, and syncs should no longer cause issues.<br />
<br />
=== "Cannot write into apps directory" ===<br />
<br />
As mentioned in the [https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html official admin manual],<br />
either you need an apps directory that is writable by the http user, or you need to set {{ic|appstoreenabled}} to {{ic|false}}. <br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), it may be necessary to add your ''/path/to/data'' directory to the string on the line starting with {{ic|php_admin_value open_basedir }}:<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|2=<br />
<br />
php_admin_value open_basedir "''/path/to/data/'':/srv/http/:/dev/urandom:/tmp/:/usr/share/pear/:/usr/share/webapps/nextcloud/:/etc/webapps/nextcloud"<br />
}}<br />
<br />
=== Installed apps get blocked because of MIME type error ===<br />
<br />
If you are putting your apps folder outside of the nextcloud installation directory make sure your webserver serves it properly.<br />
<br />
In nginx this is accomplished by adding a location block to the nginx configuration as the folder will not be included in it by default.<br />
<br />
location ~ /apps2/(.*)$ {<br />
alias /var/www/nextcloud/apps/$1;<br />
}<br />
<br />
=== Security warnings even though the recommended settings have been included in nginx.conf ===<br />
<br />
At the top of the admin page there might be a warning to set the {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}},<br />
{{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}} and {{ic|X-Robots-Tag}} according to https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/harden_server.html{{Dead link|2020|04|01|status=404}}<br />
even though they are already set like that.<br />
<br />
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:<br />
<br />
{{hc|$ curl -I https://domain.tld|<nowiki><br />
...<br />
X-XSS-Protection: 1; mode=block<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: Sameorigin<br />
X-Robots-Tag: none<br />
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: SAMEORIGIN<br />
X-XSS-Protection: 1; mode=block<br />
X-Robots-Tag: none<br />
</nowiki>}}<br />
<br />
While the fast_cgi sample config has a parameter to avoid that ( {{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}} ), when using uwsgi and nginx the following modification of the uwsgi part in nginx.conf could help:<br />
<br />
{{hc| /etc/nginx/nginx.conf|<nowiki><br />
...<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_hide_header X-Frame-Options;<br />
#Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
#uwsgi_pass 127.0.0.1:3001;<br />
}<br />
...<br />
</nowiki>}}<br />
<br />
=== "Reading from keychain failed with error: 'No keychain service available'" ===<br />
<br />
Can be fixed for Gnome by installing the following 2 packages, {{Pkg|libgnome-keyring}} and {{Pkg|gnome-keyring}}.<br />
Or the following for KDE, {{Pkg|libgnome-keyring}} and {{Pkg|qtkeychain}}.<br />
<br />
=== FolderSync: "Method Not Allowed" ===<br />
<br />
FolderSync needs access to {{ic|/owncloud/remote.php/webdav}}, so you could create another alias for owncloud in your {{ic|/etc/httpd/conf/extra/nextcloud.conf}}<br />
<br />
<IfModule mod_alias.c><br />
Alias /nextcloud /usr/share/webapps/nextcloud/<br />
Alias /owncloud /usr/share/webapps/nextcloud/<br />
</IfModule><br />
<br />
== See also ==<br />
<br />
* [https://docs.nextcloud.com/ Nextcloud Documentation Overview]<br />
* [https://docs.nextcloud.com/server/latest/admin_manual/ Nextcloud Admin Manual]</div>Milkhttps://wiki.archlinux.org/index.php?title=PipeWire&diff=634522PipeWire2020-09-06T20:06:11Z<p>Milk: /* Audio (JACK) */ and it's an api</p>
<hr />
<div>[[Category:Multimedia]]<br />
[[ja:PipeWire]]<br />
[http://pipewire.org PipeWire] is a rather new multimedia framework by GNOME. The main developer is Wim Taymans.<br />
<br />
PipeWire supports containers like [[Flatpak]] and does not rely on [[user group]]s ''audio'' and ''video'', but rather uses a PolKit-like security model asking Flatpak or Wayland for permission to record screen or audio.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{pkg|pipewire}}, {{pkg|pipewire-pulse}} (and optionally {{pkg|pipewire-jack}} and {{pkg|pipewire-docs}}) packages from the official repositories or the {{aur|pipewire-git}} package from the [[AUR]].<br />
<br />
The package installs systemd unit files for the service itself and automatic socket activation (which means it will autostart).<br />
<br />
systemctl --user status pipewire.socket<br />
systemctl --user status pipewire.service<br />
<br />
== Usage ==<br />
<br />
=== WebRTC screen sharing ===<br />
<br />
Most browsers used to rely on X11 for capturing the desktop (or apps) when using WebRTC (e.g. on google Hangouts); because Gnome shell uses Wayland by default on Arch when started by GDM, desktop sharing is basically broken, but pipewire is going to provide support for this usecase under Wayland.<br />
<br />
This requires [http://jgrulich.cz/2018/07/04/how-to-enable-and-use-screen-sharing-on-wayland Pipewire and xdg-desktop-portal to be installed]; Firefox 68 [https://bugzilla.mozilla.org/show_bug.cgi?id=1496359 will support PipeWire with a custom patch from fedora], and on Chromium (73+) you need to enable [https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWire support] the following url in a chromium tab:<br />
chrome://flags/#enable-webrtc-pipewire-capturer<br />
<br />
Note that since Chrome(ium) is currently using pipewire 0.2 whereas Arch ships pipewire 0.3, you also need to install {{Pkg|libpipewire02}} for screen sharing to work.<br />
<br />
{{Warning|Since [https://github.com/flatpak/xdg-desktop-portal-gtk/pull/225 this pull request] was merged following note about specific app/window sharing may be not correct anymore}}<br />
<br />
Note that the only supported feature is sharing the entire desktop and not a specific app/window due to [https://github.com/flatpak/xdg-desktop-portal-gtk/issues/204 missing implementation in xdg-desktop-portal].<br />
<br />
=== Video ===<br />
<br />
Although the software is not yet production ready, it is safe to play around with. Most application that rely on [[GStreamer]] to handle e.g. video streams should work out-of-the-box due to the PipeWire GStreamer plugin. Applications like e.g. {{pkg|cheese}} are therefore already able to share video input using it.<br />
<br />
=== Audio (JACK) ===<br />
<br />
Support for the JACK API on top of PipeWire is implemented and first applications relying on said interface are working in a test environment. Through that work one is able to achieve the low latency needed for pro-audio with PipeWire.<br />
<br />
A detailed description of how to enable and use it can be found [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK here].<br />
<br />
=== ALSA/Legacy applications ===<br />
<br />
Work on ALSA emulation is ongoing but first working code exists.<br />
<br />
=== Bluetooth ===<br />
<br />
PipeWire provides a bluetooth module that integrates directly into the Bluez Bluetooth framework. Pairing and management hence works the same since it is handled by higher level interfaces.<br />
<br />
=== Drop-in replacement for PulseAudio/Jack (Experimental) ===<br />
<br />
PipeWire provides ABI-compatible library for PulseAudio and JACK clients.<br />
<br />
To use PipeWire as a drop-in replacement, install {{aur|pipewire-pulse-dropin}} for PulseAudio and {{aur|pipewire-jack-dropin}} for JACK. It is recommended to reboot after installing to make sure applications use the PipeWire libraries, not PulseAudio/JACK ones.<br />
<br />
To check if the replacement is working, run the following command and see the output:<br />
<br />
{{hc|1=$ pactl info|2=<br />
Server String: pipewire-0<br />
...<br />
}}<br />
<br />
See [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ this blog entry] for more information on testing PipeWire.<br />
<br />
== See also ==<br />
<br />
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab<br />
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — Blog post from January 2018 outlining the state of PipeWire at the time</div>Milkhttps://wiki.archlinux.org/index.php?title=PipeWire&diff=634521PipeWire2020-09-06T20:05:52Z<p>Milk: /* Audio (JACK) */ it is spelt JACK</p>
<hr />
<div>[[Category:Multimedia]]<br />
[[ja:PipeWire]]<br />
[http://pipewire.org PipeWire] is a rather new multimedia framework by GNOME. The main developer is Wim Taymans.<br />
<br />
PipeWire supports containers like [[Flatpak]] and does not rely on [[user group]]s ''audio'' and ''video'', but rather uses a PolKit-like security model asking Flatpak or Wayland for permission to record screen or audio.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{pkg|pipewire}}, {{pkg|pipewire-pulse}} (and optionally {{pkg|pipewire-jack}} and {{pkg|pipewire-docs}}) packages from the official repositories or the {{aur|pipewire-git}} package from the [[AUR]].<br />
<br />
The package installs systemd unit files for the service itself and automatic socket activation (which means it will autostart).<br />
<br />
systemctl --user status pipewire.socket<br />
systemctl --user status pipewire.service<br />
<br />
== Usage ==<br />
<br />
=== WebRTC screen sharing ===<br />
<br />
Most browsers used to rely on X11 for capturing the desktop (or apps) when using WebRTC (e.g. on google Hangouts); because Gnome shell uses Wayland by default on Arch when started by GDM, desktop sharing is basically broken, but pipewire is going to provide support for this usecase under Wayland.<br />
<br />
This requires [http://jgrulich.cz/2018/07/04/how-to-enable-and-use-screen-sharing-on-wayland Pipewire and xdg-desktop-portal to be installed]; Firefox 68 [https://bugzilla.mozilla.org/show_bug.cgi?id=1496359 will support PipeWire with a custom patch from fedora], and on Chromium (73+) you need to enable [https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWire support] the following url in a chromium tab:<br />
chrome://flags/#enable-webrtc-pipewire-capturer<br />
<br />
Note that since Chrome(ium) is currently using pipewire 0.2 whereas Arch ships pipewire 0.3, you also need to install {{Pkg|libpipewire02}} for screen sharing to work.<br />
<br />
{{Warning|Since [https://github.com/flatpak/xdg-desktop-portal-gtk/pull/225 this pull request] was merged following note about specific app/window sharing may be not correct anymore}}<br />
<br />
Note that the only supported feature is sharing the entire desktop and not a specific app/window due to [https://github.com/flatpak/xdg-desktop-portal-gtk/issues/204 missing implementation in xdg-desktop-portal].<br />
<br />
=== Video ===<br />
<br />
Although the software is not yet production ready, it is safe to play around with. Most application that rely on [[GStreamer]] to handle e.g. video streams should work out-of-the-box due to the PipeWire GStreamer plugin. Applications like e.g. {{pkg|cheese}} are therefore already able to share video input using it.<br />
<br />
=== Audio (JACK) ===<br />
<br />
Support for the JACK protocol on top of PipeWire is implemented and first applications relying on said interface are working in a test environment. Through that work one is able to achieve the low latency needed for pro-audio with PipeWire.<br />
<br />
A detailed description of how to enable and use it can be found [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK here].<br />
<br />
=== ALSA/Legacy applications ===<br />
<br />
Work on ALSA emulation is ongoing but first working code exists.<br />
<br />
=== Bluetooth ===<br />
<br />
PipeWire provides a bluetooth module that integrates directly into the Bluez Bluetooth framework. Pairing and management hence works the same since it is handled by higher level interfaces.<br />
<br />
=== Drop-in replacement for PulseAudio/Jack (Experimental) ===<br />
<br />
PipeWire provides ABI-compatible library for PulseAudio and JACK clients.<br />
<br />
To use PipeWire as a drop-in replacement, install {{aur|pipewire-pulse-dropin}} for PulseAudio and {{aur|pipewire-jack-dropin}} for JACK. It is recommended to reboot after installing to make sure applications use the PipeWire libraries, not PulseAudio/JACK ones.<br />
<br />
To check if the replacement is working, run the following command and see the output:<br />
<br />
{{hc|1=$ pactl info|2=<br />
Server String: pipewire-0<br />
...<br />
}}<br />
<br />
See [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ this blog entry] for more information on testing PipeWire.<br />
<br />
== See also ==<br />
<br />
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab<br />
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — Blog post from January 2018 outlining the state of PipeWire at the time</div>Milkhttps://wiki.archlinux.org/index.php?title=JACK_Audio_Connection_Kit&diff=623052JACK Audio Connection Kit2020-06-30T19:47:55Z<p>Milk: /* See also */ * [https://github.com/jackaudio/jackaudio.github.com/wiki JACK Wiki]</p>
<hr />
<div>[[Category:Sound]]<br />
[[fr:Jack]]<br />
[[es:JACK Audio Connection Kit]]<br />
[[ja:JACK Audio Connection Kit]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|Professional audio}}<br />
{{Related articles end}}<br />
From [[Wikipedia:JACK Audio Connection Kit]]:<br />
:JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API. <br />
<br />
==Installation==<br />
In order for JACK to work properly, your user needs to be [[Users and groups#Group management|added]] to the {{ic|realtime}} group for access to higher ulimits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} (provided by the {{Pkg|realtime-privileges}} package), which is needed for realtime audio processing.<br />
{{Note|You need to manually add your user to the {{ic|realtime}} group even if you're using logind, since logind just handles access to direct hardware.}}<br />
<br />
There are two JACK implementations, see [https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2 this comparison] for the difference between the two. In short, Jack 1 and Jack 2 are equivalent implementations of the same protocol. Programs compiled against Jack 1 will work with Jack 2 without recompile (and vice versa). <br />
<br />
===JACK2===<br />
'''JACK2''' is a C++ implementation with SMP support. [[Install]] it with the {{Pkg|jack2}} package. For 32-bit application support, also install the {{Pkg|lib32-jack2}} package from the [[multilib]] repository. To use the ''jack_control'' command, also install the {{Pkg|python-dbus}} package.<br />
<br />
===JACK===<br />
'''JACK''' uses a C API and supports more than one soundcard on Linux (plus MIDI). [[Install]] it with the {{pkg|jack}} package. For 32-bit application support, also install the {{Pkg|lib32-jack}} package from the [[multilib]] repository.<br />
<br />
===GUI===<br />
<br />
* {{App|Cadence|Set of tools useful for audio production. It performs system checks, manages JACK, calls other tools and make system tweaks.|https://kx.studio/Applications:Cadence|{{Pkg|cadence}}}}<br />
* {{App|Carla|Fully-featured plugin host, with support for many audio drivers and plugin formats.|https://kx.studio/Applications:Carla|{{Pkg|carla}}}}<br />
* {{App|Patchage|Modular patch bay for audio and MIDI systems based on JACK and ALSA.|https://drobilla.net/software/patchage|{{Pkg|patchage}}}}<br />
* {{App|PatchMatrix|JACK patch bay in flow matrix style.|https://git.open-music-kontrollers.ch/lad/patchmatrix/about/|{{Pkg|patchmatrix}}}}<br />
* {{App|QjackCtl|Simple Qt application to control the JACK sound server daemon.|https://qjackctl.sourceforge.io/|{{Pkg|qjackctl}}}}<br />
<br />
==Basic Configuration==<br />
<br />
===Overview===<br />
The right configuration for your hardware and application needs depends on several factors. Your sound card and CPU will heavily affect how low of latency you can achieve when using JACK.<br />
<br />
The mainline Linux kernel now supports realtime scheduling, so using a patched kernel is no longer necessary. However, {{AUR|linux-rt}} in the AUR is a patched kernel that has some extra patches that can help to get lower latencies.<br />
<br />
===A shell-based example setup===<br />
JACK2 can be directly launched with the ''jackd'' executable, or controlled with the D-Bus-based ''jack_control'' binary. ''jack_control'' makes it easy to start and configure JACK2 via a shell script. Note that you must install the {{Pkg|python-dbus}} package to use ''jack_control''.<br />
<br />
Create a shell script that can be executed at X login:<br />
<br />
{{hc|start_jack.sh|<br />
#!/bin/bash<br />
<br />
jack_control start<br />
jack_control ds alsa<br />
jack_control dps device hw:HD2<br />
jack_control dps rate 48000<br />
jack_control dps nperiods 2<br />
jack_control dps period 64<br />
sleep 10<br />
a2jmidid -e &<br />
sleep 10<br />
qjackctl &<br />
}}<br />
<br />
The above will start a working JACK instance which other programs can then utilize. Details of each line follow. When discovering your own best configuration, it is helpful to do trial and error using QjackCtl's GUI with a non-D-Bus JACK2 version.<br />
<br />
====Details of the shell-based example setup====<br />
<br />
jack_control start<br />
Starts JACK if it is not already started.<br />
jack_control ds alsa<br />
Sets JACK to use the ALSA driver set.<br />
jack_control dps device hw:HD2<br />
Sets JACK to use ALSA-compatible sound card named HD2. One can find the names with {{ic|cat /proc/asound/cards}}. Most ALSA tutorials and default configurations use card numbers, but this can get confusing when external MIDI devices are in use; names make it easier.<br />
jack_control dps rate 48000<br />
Sets JACK to use 48000 khz sampling. Happens to work very well with this card. Some cards only do 44100, many will go much higher. The higher you go, the lower your latency, but the better your card and your CPU have to be, and software has to support this as well.<br />
jack_control dps nperiods 2<br />
Sets JACK to use 2 periods. 2 is right for motherboard, PCI, PCI-X, etc.; 3 for USB.<br />
jack_control dps period 64<br />
Sets JACK to use 64 frames per period. Lower is less latency, but the setting in this script gives 2.67 ms latency, which is nicely low without putting too much stress on the particular hardware this example was built for. If a USB sound system were in use it might be good to try 32. Anything less than 3-4 ms should be fine for realtime synthesis and/or FX, 5 ms is the smallest a human being can detect. QjackCtl will tell you how you are doing; at no-load, which means no clients attached, you will want a max of 3-5% CPU usage, and if you cannot get that without xruns (the red numbers which mean the system cannot keep up with the demands), you will have to improve your hardware.<br />
sleep 10<br />
Wait for the above to settle.<br />
a2jmidid -e &<br />
Start the ALSA-to-JACK MIDI bridge. Good for mixing in applications which take MIDI input through ALSA but not JACK.<br />
sleep 10<br />
Wait for the above to settle.<br />
qjackctl &<br />
Load QjackCtl. GUI configuration tells it to run in the system tray. It will pick up the JACK session started by D-Bus just fine, and very smoothly too. It maintains the patchbay, the connections between these applications and any other JACK-enabled apps to be started manually. The patchbay is set up using manual GUI, but connections pre-configured in the patchbay are automatically created by QjackCtl itself when apps are started.<br />
<br />
===A GUI-based example setup===<br />
This example setup utilizes a more GUI focused configuration and management of JACK<br />
<br />
* Install {{Pkg|jack2}} and {{Pkg|python-dbus}}.<br />
* Install {{Pkg|qjackctl}}, and tell your GUI window/desktop system to run it at startup.<br />
* Make sure QjackCtl is told to:<br />
** use the D-Bus interface,<br />
** run at startup,<br />
** save its configuration to the default location,<br />
** start the JACK audio server on application startup,<br />
** enable the system tray icon, and<br />
** start minimized to system tray.<br />
* Reboot.<br />
* After logging in, you will see QjackCtl in your system tray. Left-click on it.<br />
* Tweak settings in the QjackCtl GUI to lower latency. The Frame Size, Frame Buffer, and Bitrate settings all affect latency. Larger frame sizes lower latency, lower frame buffers lower latency, and higher bitrate settings lower latency, but all increase load on the sound card and your CPU. A Latency of about ~5ms is desirable for direct monitoring of instruments or microphones, as the latency begins to become perceptible at higher latencies.<br />
<br />
===An alternative GUI-based setup===<br />
<br />
If you use JACK for demanding tasks , but every now and then, it's possible to suspend a running pulseaudio session with QjackCtl just when you're using it. On a virgin config, modify the "Server prefix" option in the "Settings" > "Advanced" submenu, so that it states :<br />
<br />
pasuspender -- jackd<br />
<br />
<br />
The pulseaudio session should resume fine after you close QjackCtl. Tip courtesy of [https://bbs.archlinux.org/viewtopic.php?pid=1163340#p1163340 this post].<br />
<br />
===Playing nice with ALSA===<br />
<br />
{{Note|1=There are several bugs in {{Pkg|alsa-lib}} and {{Pkg|alsa-plugins}} 1.1.9-2 that will cause audio to not play or errors regarding buffers with this setup. Please read [https://bbs.archlinux.org/viewtopic.php?id=250116] for workarounds and potential solutions.}} <br />
To allow Alsa programs to play while jack is running you must install the jack plugin for alsa with {{Pkg|alsa-plugins}}.<br />
<br />
And enable it by editing (or creating) /etc/asound.conf (system wide settings) to have these lines if you have a simple 2-channel setup:<br />
{{bc|<nowiki><br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
If you have a different number of output/input channels or your first two channels aren't the ones you wish to route audio to, you cannot use the predefined jack pcm source from {{ic|/etc/alsa/conf.d/50-jack.conf}}, but rather something like:<br />
{{bc|<nowiki><br />
# the first jack port goes to an output we don't use and there are no recording devices<br />
pcm.!jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_2<br />
1 system:playback_3<br />
}<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
You need not restart your computer or anything. Just edit the alsa config files, start up jack, and there you go...<br />
<br />
Remember to start it as a '''user'''. If you start it with {{ic|jackd -d alsa}} as user X, it will not work for user Y.<br />
<br />
Another approach, using ALSA loopback device (more complex but probably more robust), is described in [https://alsa.opensrc.org/Jack_and_Loopback_device_as_Alsa-to-Jack_bridge this article].<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer requires the {{pkg|gst-plugins-good}} package to work with JACK, which contains the jackaudiosink plugin that adds JACK playback support.<br />
<br />
Further information (outdated): http://jackaudio.org/faq/gstreamer_via_jack.html<br />
<br />
=== PulseAudio ===<br />
If you need to keep {{Pkg|pulseaudio}} installed (in the event it is required by other packages, like {{Pkg|gnome-settings-daemon}}), you may want to prevent it from spawning automatically with X and taking over from JACK.<br />
<br />
Edit {{ic|/etc/pulse/client.conf}}, uncomment "autospawn" and set it to "no":<br />
;autospawn = yes<br />
autospawn = no<br />
<br />
''If you want both to play along, see: [[PulseAudio/Examples#PulseAudio through JACK]]''<br />
<br />
Cadence and other JACK GUI applications are known to write values to {{ic|~/.pulse/daemon.conf}}. These values override any system-wide defaults enabling unexpected behavior (e.g. flat volumes). Refer to [[PulseAudio#Configuration]] on how to update these configurations.<br />
<br />
=== Firewire ===<br />
In order to prevent ALSA from messing around with your firewire devices you have to blacklist all firewire related kernel modules. This also prevents PulseAudio from using firewire. Create the following file:<br />
<br />
{{hc|/etc/modprobe.d/alsa-no-jack.conf|<br />
blacklist snd-fireworks<br />
blacklist snd-bebob<br />
blacklist snd-oxfw<br />
blacklist snd-dice<br />
blacklist snd-firewire-digi00x<br />
blacklist snd-firewire-tascam<br />
blacklist snd-firewire-lib<br />
blacklist snd-firewire-transceiver<br />
blacklist snd-fireface<br />
blacklist snd-firewire-motu<br />
}}<br />
<br />
''The list of modules is the most recent available at the time of writing at [https://github.com/takaswie/snd-firewire-improve Alsa Firewire Improve Repository].''<br />
<br />
Now you can unload your loaded firewire modules or reboot.<br />
<br />
=== Network / remote audio ===<br />
<br />
JACK can be configured to send audio data over a network to a "master" machine, which then outputs the audio to a physical device. This can be useful to mix audio from a number of "slave" computers without requiring additional cables or hardware mixers, and keeping the audio path digital for as long as possible (as hardware mixers with digital inputs are very rare).<br />
<br />
The configuration is very simple, however it requires a network that supports multicast traffic (i.e. IGMP snooping must be enabled on managed network switches), and it requires all machines be running the same JACK major version (JACK1 or JACK2) as the protocols are not interoperable between versions. For JACK2, the {{ic|netmanager}} module must be loaded:<br />
<br />
{{bc|<nowiki><br />
master$ jack_load netmanager -i -c<br />
</nowiki>}}<br />
<br />
The {{ic|-i -c}} option tells the netmanager to automatically map any incoming connections to the default audio device. Without this, each incoming connection would have to be manually mapped on each connection. You can use {{ic|-i -h}} instead to see all available options, however note that the options are printed in the {{ic|jackd}} server output, the {{ic|jack_load}} command will not show anything.<br />
<br />
On the client, JACK must be started in network mode:<br />
<br />
{{bc|<nowiki><br />
slave$ jackd -d net<br />
</nowiki>}}<br />
<br />
The two machines will connect and on the master the new audio source will be visible:<br />
<br />
{{bc|<nowiki><br />
master$ jack_lsp<br />
system:playback_1<br />
system:playback_2<br />
remotehost:from_slave_1<br />
remotehost:from_slave_2<br />
</nowiki>}}<br />
<br />
If you passed the {{ic|-c}} option to {{ic|jack_load}} as above, then the remote system will now be able to play audio.<br />
<br />
==MIDI==<br />
<br />
JACK can handle one soundcard very well, and an arbitrary number of MIDI devices (connected e.g. via USB).<br />
If you start JACK and want to use a MIDI keyboard or a synthesizer or some other pure MIDI device, you have to start JACK with a proper soundcard (one that actually outputs or inputs PCM sound).<br />
As soon you have done that, you can connect the MIDI device. E.g. with QjackCtl ({{pkg|qjackctl}}), you click on the connect button and you will find your device listed under JACK-MIDI or ALSA-MIDI, depending on the driver.<br />
<br />
For JACK-MIDI, you may want to set the '''MIDI Driver''' to '''seq''' or '''raw''' in QjackCtl ''Setup > Settings''. This should make your MIDI device appear under the ''MIDI'' tab. You can also change the name of the client (from a generic "midi_capture_1" to something more descriptive), if you enable ''Setup > Display > Enable client/port aliases'' and then ''Enable client/port aliases editing (rename)''.<br />
<br />
For ALSA-MIDI, make sure to turn on '''Enable ALSA Sequencer support''' in QjackCtl ''Setup > Misc''. This will add the ''ALSA'' tab in QjackCtl ''Connect'' window where your MIDI controller will show up.<br />
<br />
{{Note| {{pkg|jack2}} does not come with bridging support for legacy ALSA MIDI only applications. Therefore {{pkg|a2jmidid}} is required [https://github.com/jackaudio/jack2/issues/362 until upstream achieves feature parity on this].}}<br />
For bridging ALSA-MIDI to JACK-MIDI, you may consider using a2jmidid ({{Pkg|a2jmidid}}). The following command will export all available ALSA MIDI ports to JACK MIDI ports:<br />
$ a2jmidid -e<br />
They will be visible in QjackCtl under the ''MIDI'' tab labelled "a2j" client.<br />
You can automate starting of a2jmidid by adding to QjackCtl ''Setup > Options > Execute script after Startup'': {{ic|/usr/bin/a2jmidid -e &}}<br />
{{note|When connecting MIDI keyboard controllers in QjackCtl, make sure to ''Expand All'' first and connect the desired ''Output Ports'' (below the ''Readable Clients'') to the ''Input Ports'' (below the ''Writable Clients''). As a shortcut, if you select a writable client instead of individual ports as your destination, it should connect all its currently displayed output ports underneath.}}<br />
<br />
*'''Q:''' What is the difference between JACK-MIDI and ALSA-MIDI?<br />
*'''A:''' The former has improved timing and sample accurate MIDI event alignment. It extends or may even replace the latter but at this point they both co-exist.<br />
<br />
To install some M-Audio MIDI keyboards, you will need the firmware package {{AUR|midisport-firmware}} in the [[AUR]]. Also, the snd_usb_audio module has to be available.<br />
For more information about specific USB MIDI devices, see http://alsa.opensrc.org/USBMidiDevices.<br />
<br />
==Troubleshooting==<br />
==="Cannot lock down memory area (Cannot allocate memory)" message on startup===<br />
<br />
See [[Realtime process management#Configuring PAM]] and ensure that the user is in the {{ic|realtime}} [[user group]].<br />
<br />
===jack2 and qjackctl errors===<br />
Still having the "Cannot allocate memory" and/or "Cannot connect to server socket err = No such file or directory" error(s) when pressing qjackctl's start button?<br />
<br />
Please delete {{ic|~/.jackdrc}}, {{ic|~/.config/jack/conf.xml}}, {{ic|~/.config/rncbc.org/QjackCtl.conf}}. Kill ''jackdbus'' and restart from scratch :)<br />
(Thanks to nedko)<br />
<br />
Also try running <br />
$ fuser /dev/snd/*<br />
and check the resulting PID's with<br />
$ ps ax | grep [PID here]<br />
This will hopefully show the conflicting programs.<br />
<br />
==="ALSA: cannot set channel count to 1 for capture" error in logs===<br />
Change ALSA input and output channels from 1 to 2<br />
<br />
===Crackling or pops in audio===<br />
Your CPU or sound card is too weak to handle your settings for JACK. Lower the bitrate, lower the frame size, and raise the frame period in small increments until crackling stops. You can also try changing the sampling rate to 44100 or whatever is natively supported. This allows jack to send audio to the system without having to resample. In {{Pkg|jack2}} with {{ic|jack_control}}, this is accomplished with<br />
<br />
jack_control dps rate 44100<br />
<br />
===Problems with specific applications===<br />
====VLC - no audio after starting JACK====<br />
Run VLC and change the following menu options:<br />
* Tools > Preferences<br />
* Show settings: All<br />
* Audio > Output modules > Audio output module: JACK audio output<br />
* Audio > Output modules > JACK: Automatically connect to writable clients (enable)<br />
<br />
==See also==<br />
* [https://github.com/jackaudio/jackaudio.github.com/wiki JACK Wiki]<br />
** [https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2 Differences between JACK 1 and JACK2]<br />
* [http://jackaudio.org/faq/ JACK FAQ]</div>Milkhttps://wiki.archlinux.org/index.php?title=JACK_Audio_Connection_Kit&diff=623051JACK Audio Connection Kit2020-06-30T19:47:03Z<p>Milk: /* GUI */ * {{App|Carla|Fully-featured plugin host, with support for many audio drivers and plugin formats.|https://kx.studio/Applications:Carla|{{Pkg|carla}}}}</p>
<hr />
<div>[[Category:Sound]]<br />
[[fr:Jack]]<br />
[[es:JACK Audio Connection Kit]]<br />
[[ja:JACK Audio Connection Kit]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|Professional audio}}<br />
{{Related articles end}}<br />
From [[Wikipedia:JACK Audio Connection Kit]]:<br />
:JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API. <br />
<br />
==Installation==<br />
In order for JACK to work properly, your user needs to be [[Users and groups#Group management|added]] to the {{ic|realtime}} group for access to higher ulimits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} (provided by the {{Pkg|realtime-privileges}} package), which is needed for realtime audio processing.<br />
{{Note|You need to manually add your user to the {{ic|realtime}} group even if you're using logind, since logind just handles access to direct hardware.}}<br />
<br />
There are two JACK implementations, see [https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2 this comparison] for the difference between the two. In short, Jack 1 and Jack 2 are equivalent implementations of the same protocol. Programs compiled against Jack 1 will work with Jack 2 without recompile (and vice versa). <br />
<br />
===JACK2===<br />
'''JACK2''' is a C++ implementation with SMP support. [[Install]] it with the {{Pkg|jack2}} package. For 32-bit application support, also install the {{Pkg|lib32-jack2}} package from the [[multilib]] repository. To use the ''jack_control'' command, also install the {{Pkg|python-dbus}} package.<br />
<br />
===JACK===<br />
'''JACK''' uses a C API and supports more than one soundcard on Linux (plus MIDI). [[Install]] it with the {{pkg|jack}} package. For 32-bit application support, also install the {{Pkg|lib32-jack}} package from the [[multilib]] repository.<br />
<br />
===GUI===<br />
<br />
* {{App|Cadence|Set of tools useful for audio production. It performs system checks, manages JACK, calls other tools and make system tweaks.|https://kx.studio/Applications:Cadence|{{Pkg|cadence}}}}<br />
* {{App|Carla|Fully-featured plugin host, with support for many audio drivers and plugin formats.|https://kx.studio/Applications:Carla|{{Pkg|carla}}}}<br />
* {{App|Patchage|Modular patch bay for audio and MIDI systems based on JACK and ALSA.|https://drobilla.net/software/patchage|{{Pkg|patchage}}}}<br />
* {{App|PatchMatrix|JACK patch bay in flow matrix style.|https://git.open-music-kontrollers.ch/lad/patchmatrix/about/|{{Pkg|patchmatrix}}}}<br />
* {{App|QjackCtl|Simple Qt application to control the JACK sound server daemon.|https://qjackctl.sourceforge.io/|{{Pkg|qjackctl}}}}<br />
<br />
==Basic Configuration==<br />
<br />
===Overview===<br />
The right configuration for your hardware and application needs depends on several factors. Your sound card and CPU will heavily affect how low of latency you can achieve when using JACK.<br />
<br />
The mainline Linux kernel now supports realtime scheduling, so using a patched kernel is no longer necessary. However, {{AUR|linux-rt}} in the AUR is a patched kernel that has some extra patches that can help to get lower latencies.<br />
<br />
===A shell-based example setup===<br />
JACK2 can be directly launched with the ''jackd'' executable, or controlled with the D-Bus-based ''jack_control'' binary. ''jack_control'' makes it easy to start and configure JACK2 via a shell script. Note that you must install the {{Pkg|python-dbus}} package to use ''jack_control''.<br />
<br />
Create a shell script that can be executed at X login:<br />
<br />
{{hc|start_jack.sh|<br />
#!/bin/bash<br />
<br />
jack_control start<br />
jack_control ds alsa<br />
jack_control dps device hw:HD2<br />
jack_control dps rate 48000<br />
jack_control dps nperiods 2<br />
jack_control dps period 64<br />
sleep 10<br />
a2jmidid -e &<br />
sleep 10<br />
qjackctl &<br />
}}<br />
<br />
The above will start a working JACK instance which other programs can then utilize. Details of each line follow. When discovering your own best configuration, it is helpful to do trial and error using QjackCtl's GUI with a non-D-Bus JACK2 version.<br />
<br />
====Details of the shell-based example setup====<br />
<br />
jack_control start<br />
Starts JACK if it is not already started.<br />
jack_control ds alsa<br />
Sets JACK to use the ALSA driver set.<br />
jack_control dps device hw:HD2<br />
Sets JACK to use ALSA-compatible sound card named HD2. One can find the names with {{ic|cat /proc/asound/cards}}. Most ALSA tutorials and default configurations use card numbers, but this can get confusing when external MIDI devices are in use; names make it easier.<br />
jack_control dps rate 48000<br />
Sets JACK to use 48000 khz sampling. Happens to work very well with this card. Some cards only do 44100, many will go much higher. The higher you go, the lower your latency, but the better your card and your CPU have to be, and software has to support this as well.<br />
jack_control dps nperiods 2<br />
Sets JACK to use 2 periods. 2 is right for motherboard, PCI, PCI-X, etc.; 3 for USB.<br />
jack_control dps period 64<br />
Sets JACK to use 64 frames per period. Lower is less latency, but the setting in this script gives 2.67 ms latency, which is nicely low without putting too much stress on the particular hardware this example was built for. If a USB sound system were in use it might be good to try 32. Anything less than 3-4 ms should be fine for realtime synthesis and/or FX, 5 ms is the smallest a human being can detect. QjackCtl will tell you how you are doing; at no-load, which means no clients attached, you will want a max of 3-5% CPU usage, and if you cannot get that without xruns (the red numbers which mean the system cannot keep up with the demands), you will have to improve your hardware.<br />
sleep 10<br />
Wait for the above to settle.<br />
a2jmidid -e &<br />
Start the ALSA-to-JACK MIDI bridge. Good for mixing in applications which take MIDI input through ALSA but not JACK.<br />
sleep 10<br />
Wait for the above to settle.<br />
qjackctl &<br />
Load QjackCtl. GUI configuration tells it to run in the system tray. It will pick up the JACK session started by D-Bus just fine, and very smoothly too. It maintains the patchbay, the connections between these applications and any other JACK-enabled apps to be started manually. The patchbay is set up using manual GUI, but connections pre-configured in the patchbay are automatically created by QjackCtl itself when apps are started.<br />
<br />
===A GUI-based example setup===<br />
This example setup utilizes a more GUI focused configuration and management of JACK<br />
<br />
* Install {{Pkg|jack2}} and {{Pkg|python-dbus}}.<br />
* Install {{Pkg|qjackctl}}, and tell your GUI window/desktop system to run it at startup.<br />
* Make sure QjackCtl is told to:<br />
** use the D-Bus interface,<br />
** run at startup,<br />
** save its configuration to the default location,<br />
** start the JACK audio server on application startup,<br />
** enable the system tray icon, and<br />
** start minimized to system tray.<br />
* Reboot.<br />
* After logging in, you will see QjackCtl in your system tray. Left-click on it.<br />
* Tweak settings in the QjackCtl GUI to lower latency. The Frame Size, Frame Buffer, and Bitrate settings all affect latency. Larger frame sizes lower latency, lower frame buffers lower latency, and higher bitrate settings lower latency, but all increase load on the sound card and your CPU. A Latency of about ~5ms is desirable for direct monitoring of instruments or microphones, as the latency begins to become perceptible at higher latencies.<br />
<br />
===An alternative GUI-based setup===<br />
<br />
If you use JACK for demanding tasks , but every now and then, it's possible to suspend a running pulseaudio session with QjackCtl just when you're using it. On a virgin config, modify the "Server prefix" option in the "Settings" > "Advanced" submenu, so that it states :<br />
<br />
pasuspender -- jackd<br />
<br />
<br />
The pulseaudio session should resume fine after you close QjackCtl. Tip courtesy of [https://bbs.archlinux.org/viewtopic.php?pid=1163340#p1163340 this post].<br />
<br />
===Playing nice with ALSA===<br />
<br />
{{Note|1=There are several bugs in {{Pkg|alsa-lib}} and {{Pkg|alsa-plugins}} 1.1.9-2 that will cause audio to not play or errors regarding buffers with this setup. Please read [https://bbs.archlinux.org/viewtopic.php?id=250116] for workarounds and potential solutions.}} <br />
To allow Alsa programs to play while jack is running you must install the jack plugin for alsa with {{Pkg|alsa-plugins}}.<br />
<br />
And enable it by editing (or creating) /etc/asound.conf (system wide settings) to have these lines if you have a simple 2-channel setup:<br />
{{bc|<nowiki><br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
If you have a different number of output/input channels or your first two channels aren't the ones you wish to route audio to, you cannot use the predefined jack pcm source from {{ic|/etc/alsa/conf.d/50-jack.conf}}, but rather something like:<br />
{{bc|<nowiki><br />
# the first jack port goes to an output we don't use and there are no recording devices<br />
pcm.!jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_2<br />
1 system:playback_3<br />
}<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "jack"<br />
hint.description "Jack Audio"<br />
}</nowiki>}}<br />
<br />
You need not restart your computer or anything. Just edit the alsa config files, start up jack, and there you go...<br />
<br />
Remember to start it as a '''user'''. If you start it with {{ic|jackd -d alsa}} as user X, it will not work for user Y.<br />
<br />
Another approach, using ALSA loopback device (more complex but probably more robust), is described in [https://alsa.opensrc.org/Jack_and_Loopback_device_as_Alsa-to-Jack_bridge this article].<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer requires the {{pkg|gst-plugins-good}} package to work with JACK, which contains the jackaudiosink plugin that adds JACK playback support.<br />
<br />
Further information (outdated): http://jackaudio.org/faq/gstreamer_via_jack.html<br />
<br />
=== PulseAudio ===<br />
If you need to keep {{Pkg|pulseaudio}} installed (in the event it is required by other packages, like {{Pkg|gnome-settings-daemon}}), you may want to prevent it from spawning automatically with X and taking over from JACK.<br />
<br />
Edit {{ic|/etc/pulse/client.conf}}, uncomment "autospawn" and set it to "no":<br />
;autospawn = yes<br />
autospawn = no<br />
<br />
''If you want both to play along, see: [[PulseAudio/Examples#PulseAudio through JACK]]''<br />
<br />
Cadence and other JACK GUI applications are known to write values to {{ic|~/.pulse/daemon.conf}}. These values override any system-wide defaults enabling unexpected behavior (e.g. flat volumes). Refer to [[PulseAudio#Configuration]] on how to update these configurations.<br />
<br />
=== Firewire ===<br />
In order to prevent ALSA from messing around with your firewire devices you have to blacklist all firewire related kernel modules. This also prevents PulseAudio from using firewire. Create the following file:<br />
<br />
{{hc|/etc/modprobe.d/alsa-no-jack.conf|<br />
blacklist snd-fireworks<br />
blacklist snd-bebob<br />
blacklist snd-oxfw<br />
blacklist snd-dice<br />
blacklist snd-firewire-digi00x<br />
blacklist snd-firewire-tascam<br />
blacklist snd-firewire-lib<br />
blacklist snd-firewire-transceiver<br />
blacklist snd-fireface<br />
blacklist snd-firewire-motu<br />
}}<br />
<br />
''The list of modules is the most recent available at the time of writing at [https://github.com/takaswie/snd-firewire-improve Alsa Firewire Improve Repository].''<br />
<br />
Now you can unload your loaded firewire modules or reboot.<br />
<br />
=== Network / remote audio ===<br />
<br />
JACK can be configured to send audio data over a network to a "master" machine, which then outputs the audio to a physical device. This can be useful to mix audio from a number of "slave" computers without requiring additional cables or hardware mixers, and keeping the audio path digital for as long as possible (as hardware mixers with digital inputs are very rare).<br />
<br />
The configuration is very simple, however it requires a network that supports multicast traffic (i.e. IGMP snooping must be enabled on managed network switches), and it requires all machines be running the same JACK major version (JACK1 or JACK2) as the protocols are not interoperable between versions. For JACK2, the {{ic|netmanager}} module must be loaded:<br />
<br />
{{bc|<nowiki><br />
master$ jack_load netmanager -i -c<br />
</nowiki>}}<br />
<br />
The {{ic|-i -c}} option tells the netmanager to automatically map any incoming connections to the default audio device. Without this, each incoming connection would have to be manually mapped on each connection. You can use {{ic|-i -h}} instead to see all available options, however note that the options are printed in the {{ic|jackd}} server output, the {{ic|jack_load}} command will not show anything.<br />
<br />
On the client, JACK must be started in network mode:<br />
<br />
{{bc|<nowiki><br />
slave$ jackd -d net<br />
</nowiki>}}<br />
<br />
The two machines will connect and on the master the new audio source will be visible:<br />
<br />
{{bc|<nowiki><br />
master$ jack_lsp<br />
system:playback_1<br />
system:playback_2<br />
remotehost:from_slave_1<br />
remotehost:from_slave_2<br />
</nowiki>}}<br />
<br />
If you passed the {{ic|-c}} option to {{ic|jack_load}} as above, then the remote system will now be able to play audio.<br />
<br />
==MIDI==<br />
<br />
JACK can handle one soundcard very well, and an arbitrary number of MIDI devices (connected e.g. via USB).<br />
If you start JACK and want to use a MIDI keyboard or a synthesizer or some other pure MIDI device, you have to start JACK with a proper soundcard (one that actually outputs or inputs PCM sound).<br />
As soon you have done that, you can connect the MIDI device. E.g. with QjackCtl ({{pkg|qjackctl}}), you click on the connect button and you will find your device listed under JACK-MIDI or ALSA-MIDI, depending on the driver.<br />
<br />
For JACK-MIDI, you may want to set the '''MIDI Driver''' to '''seq''' or '''raw''' in QjackCtl ''Setup > Settings''. This should make your MIDI device appear under the ''MIDI'' tab. You can also change the name of the client (from a generic "midi_capture_1" to something more descriptive), if you enable ''Setup > Display > Enable client/port aliases'' and then ''Enable client/port aliases editing (rename)''.<br />
<br />
For ALSA-MIDI, make sure to turn on '''Enable ALSA Sequencer support''' in QjackCtl ''Setup > Misc''. This will add the ''ALSA'' tab in QjackCtl ''Connect'' window where your MIDI controller will show up.<br />
<br />
{{Note| {{pkg|jack2}} does not come with bridging support for legacy ALSA MIDI only applications. Therefore {{pkg|a2jmidid}} is required [https://github.com/jackaudio/jack2/issues/362 until upstream achieves feature parity on this].}}<br />
For bridging ALSA-MIDI to JACK-MIDI, you may consider using a2jmidid ({{Pkg|a2jmidid}}). The following command will export all available ALSA MIDI ports to JACK MIDI ports:<br />
$ a2jmidid -e<br />
They will be visible in QjackCtl under the ''MIDI'' tab labelled "a2j" client.<br />
You can automate starting of a2jmidid by adding to QjackCtl ''Setup > Options > Execute script after Startup'': {{ic|/usr/bin/a2jmidid -e &}}<br />
{{note|When connecting MIDI keyboard controllers in QjackCtl, make sure to ''Expand All'' first and connect the desired ''Output Ports'' (below the ''Readable Clients'') to the ''Input Ports'' (below the ''Writable Clients''). As a shortcut, if you select a writable client instead of individual ports as your destination, it should connect all its currently displayed output ports underneath.}}<br />
<br />
*'''Q:''' What is the difference between JACK-MIDI and ALSA-MIDI?<br />
*'''A:''' The former has improved timing and sample accurate MIDI event alignment. It extends or may even replace the latter but at this point they both co-exist.<br />
<br />
To install some M-Audio MIDI keyboards, you will need the firmware package {{AUR|midisport-firmware}} in the [[AUR]]. Also, the snd_usb_audio module has to be available.<br />
For more information about specific USB MIDI devices, see http://alsa.opensrc.org/USBMidiDevices.<br />
<br />
==Troubleshooting==<br />
==="Cannot lock down memory area (Cannot allocate memory)" message on startup===<br />
<br />
See [[Realtime process management#Configuring PAM]] and ensure that the user is in the {{ic|realtime}} [[user group]].<br />
<br />
===jack2 and qjackctl errors===<br />
Still having the "Cannot allocate memory" and/or "Cannot connect to server socket err = No such file or directory" error(s) when pressing qjackctl's start button?<br />
<br />
Please delete {{ic|~/.jackdrc}}, {{ic|~/.config/jack/conf.xml}}, {{ic|~/.config/rncbc.org/QjackCtl.conf}}. Kill ''jackdbus'' and restart from scratch :)<br />
(Thanks to nedko)<br />
<br />
Also try running <br />
$ fuser /dev/snd/*<br />
and check the resulting PID's with<br />
$ ps ax | grep [PID here]<br />
This will hopefully show the conflicting programs.<br />
<br />
==="ALSA: cannot set channel count to 1 for capture" error in logs===<br />
Change ALSA input and output channels from 1 to 2<br />
<br />
===Crackling or pops in audio===<br />
Your CPU or sound card is too weak to handle your settings for JACK. Lower the bitrate, lower the frame size, and raise the frame period in small increments until crackling stops. You can also try changing the sampling rate to 44100 or whatever is natively supported. This allows jack to send audio to the system without having to resample. In {{Pkg|jack2}} with {{ic|jack_control}}, this is accomplished with<br />
<br />
jack_control dps rate 44100<br />
<br />
===Problems with specific applications===<br />
====VLC - no audio after starting JACK====<br />
Run VLC and change the following menu options:<br />
* Tools > Preferences<br />
* Show settings: All<br />
* Audio > Output modules > Audio output module: JACK audio output<br />
* Audio > Output modules > JACK: Automatically connect to writable clients (enable)<br />
<br />
==See also==<br />
<br />
* [https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2 Differences between JACK 1 and JACK2]<br />
* [http://jackaudio.org/faq/ JACK FAQ]</div>Milkhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=611580Nextcloud2020-05-08T22:34:02Z<p>Milk: /* PHP setup */ add quick session.save_path note</p>
<hr />
<div>[[Category:File sharing]]<br />
[[Category:Web applications]]<br />
[[fr:Owncloud]]<br />
[[ja:Nextcloud]]<br />
{{Related articles start}}<br />
{{Related|Apache HTTP Server}}<br />
{{Related|Nginx}}<br />
{{Related|OpenSSL}}<br />
{{Related|WebDAV}}<br />
{{Related articles end}}<br />
<br />
From [[Wikipedia:Nextcloud]]:<br />
<br />
:Nextcloud is a suite of client-server software for creating and using file hosting services. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server. In contrast to proprietary services like Dropbox, the open architecture allows adding additional functionality to the server in form of applications.<br />
<br />
Nextcloud is a fork of ownCloud. For differences between the two, see [[wikipedia:Nextcloud#Differences to ownCloud]].<br />
<br />
== Prerequisites ==<br />
<br />
Nextcloud requires several components:[https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server]<br />
<br />
* A web server: [[Apache]] or [[nginx]]<br />
* A database: [[MariaDB]]/MySQL, [[PostgreSQL]], [[SQLite]] or [[Oracle]]<br />
* [[PHP]] with [[#PHP setup|additional modules]]<br />
<br />
These will be configured in [[#Setup]].<br />
<br />
Make sure the required components are installed before proceeding.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|nextcloud}} package.<br />
<br />
=== Pacman hook ===<br />
<br />
To upgrade the Nextcloud database automatically on updates, you may want to create a [[pacman hook]]:<br />
<br />
{{hc|/etc/pacman.d/hooks/nextcloud.hook|2=<br />
[Trigger]<br />
Operation = Install<br />
Operation = Upgrade<br />
Type = Package<br />
Target = nextcloud<br />
Target = nextcloud-app-*<br />
<br />
[Action]<br />
Description = Update Nextcloud installation<br />
When = PostTransaction<br />
Exec = /usr/bin/runuser -u http -- /usr/bin/php /usr/share/webapps/nextcloud/occ upgrade<br />
}}<br />
<br />
== Setup ==<br />
<br />
As stated above, in order to setup Nextcloud, you must set up the appropriate PHP requirements;<br />
additionally, you must configure a database and a webserver.<br />
<br />
=== PHP setup ===<br />
<br />
{{Tip|For all prerequisite PHP modules, see [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#prerequisites-label upstream documentation].}}<br />
<br />
Make sure session.save_path is configured. Install [[PHP#gd]] and {{pkg|php-intl}} as additional modules. Configure [[PHP#OPCache|OPcache]] as recommended by [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache the documentation].<br />
<br />
Some apps (''News'' for example) require the {{ic|iconv}} extension, if you wish to use these apps, uncomment the extension in {{ic|/etc/php/php.ini}}.<br />
<br />
Depending on which database backend will be used:<br />
<br />
* For [[MySQL]], see [[PHP#MySQL/MariaDB]].<br />
* For [[PostgreSQL]], see [[PHP#PostgreSQL]].<br />
* For [[SQLite]], see [[PHP#Sqlite]].<br />
<br />
Performance may be improved through the implementation of [[PHP#Caching|caching]], see<br />
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html Configuring Memory Caching]<br />
on the official documentation for details.<br />
<br />
=== Database setup ===<br />
<br />
An SQL database must be setup and used for your Nextcloud installation. After setting up the database here,<br />
you will be prompted for its information when you first create an administrator account.<br />
<br />
==== MariaDB ====<br />
<br />
It is recommended to set up an own database and user when using [[MariaDB]]:<br />
<br />
{{hc|$ mysql -u root -p|2=<br />
mysql> CREATE DATABASE '''nextcloud''' DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';<br />
mysql> GRANT ALL PRIVILEGES ON '''nextcloud'''.* TO ''''nextcloud''''@'localhost' IDENTIFIED BY ''''password'''';<br />
mysql> FLUSH PRIVILEGES;<br />
mysql> \q<br />
}}<br />
<br />
{{Note|Create or convert the database with MySQL 4-byte support in order to use Emojis (textbased smilies) on your Nextcloud server [https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/mysql_4byte_support.html].}}<br />
<br />
==== PostgreSQL ====<br />
<br />
The following is an example of setting up a [[PostgreSQL]] user and database:<br />
<br />
{{hc|1=[postgres]$ createuser -h localhost -P nextcloud|2=<br />
Enter password for new role:<br />
Enter it again:<br />
}}<br />
<br />
[postgres]$ createdb -O nextcloud nextcloud<br />
<br />
=== Web server setup ===<br />
<br />
{{Warning|It is recommended to use HTTPS instead of plain HTTP, see [[Apache#TLS]] or [[Nginx#TLS]] for examples and implement this in the examples given below.}}<br />
<br />
Depending on which [[web server]] you are using, further setup is required, indicated below.<br />
<br />
==== Apache ====<br />
<br />
If you have not already, install [[Apache]] and install and enable [[Apache#PHP|Apache's PHP module]]<br />
<br />
Copy the Apache configuration file to the configuration directory:<br />
<br />
# cp /etc/webapps/nextcloud/apache.example.conf /etc/httpd/conf/extra/nextcloud.conf<br />
<br />
Modify the file according to your preferences. By default it includes an alias for {{ic|/nextcloud}} pointing to {{ic|/usr/share/webapps/nextcloud}}.<br />
<br />
And include it in {{ic|/etc/httpd/conf/httpd.conf}}:<br />
<br />
Include conf/extra/nextcloud.conf<br />
<br />
Ensure that the root location of your Nextcloud installation (e.g., {{ic|/usr/share/webapps/nextcloud}}) is accessible by the webserver's user {{ic|http}}.<br />
<br />
Now restart Apache ({{ic|httpd.service}}).<br />
<br />
===== WebDAV =====<br />
<br />
Nextcloud comes with its own [[WebDAV]] implementation enabled, which may conflict with the one shipped with Apache. If you have enabled WebDAV in Apache (not enabled by default), disable the modules {{ic|mod_dav}} and {{ic|mod_dav_fs}} in {{ic|/etc/httpd/conf/httpd.conf}}. See [https://forum.owncloud.org/viewtopic.php?f=17&t=7240] for details.<br />
<br />
==== Nginx ====<br />
<br />
Make sure PHP-FPM has been configured correctly as described in [[Nginx#FastCGI]]. Uncomment {{ic|1=env[PATH]}} in {{ic|/etc/php/php-fpm.d/www.conf}} as it is required by Nextcloud.<br />
<br />
Remember to set up {{ic|1=env[TMP]}} in {{ic|/etc/php/php-fpm.d/www.conf}} and make sure the directory is writable from the Nginx user.<br />
<br />
Create a [[Nginx#Server_blocks|server block]] and add the content according to the [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html Nextcloud documentation]:<br />
<br />
{{Note|Use {{ic|/usr/share/webapps/nextcloud}} as {{ic|root}} location when using {{Pkg|nextcloud}}.}}<br />
{{Tip|See the [https://github.com/graysky2/configs/blob/master/nginx/nextcloud-initial.conf following template]{{Dead link|2020|04|01|status=404}} as initial configuration when setting up [[Let's Encrypt]].}}<br />
<br />
{{hc|/etc/nginx/sites-available/nextcloud.conf|2=<nowiki><br />
upstream php-handler {<br />
server unix:/run/php-fpm/php-fpm.sock;<br />
}<br />
<br />
server {<br />
listen 443 ssl http2;<br />
listen [::]:443 ssl http2;<br />
server_name cloud.example.com;<br />
<br />
ssl_certificate /etc/ssl/nginx/cloud.example.com.crt;<br />
ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;<br />
<br />
# ..<br />
<br />
# Path to the root of your installation<br />
root /usr/share/webapps/nextcloud/;<br />
<br />
# ..<br />
<br />
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {<br />
fastcgi_split_path_info ^(.+\.php)(/.*)$;<br />
try_files $fastcgi_script_name =404;<br />
include fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_param PATH_INFO $fastcgi_path_info;<br />
fastcgi_param HTTPS on; # Comment this line if you don't use HTTPS<br />
<br />
#Avoid sending the security headers twice<br />
fastcgi_param modHeadersAvailable true;<br />
fastcgi_param front_controller_active true;<br />
fastcgi_pass php-handler;<br />
fastcgi_intercept_errors on;<br />
fastcgi_request_buffering off;<br />
<br />
# Change /var/nextcloud/ to your data storage directory.<br />
# Remember to append your env[TMP] directory.<br />
fastcgi_param PHP_VALUE open_basedir="/usr/share/webapps/nextcloud/:/etc/webapps/nextcloud/config/:/var/nextcloud/";<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
==== lighttpd ====<br />
<br />
Enable [[lighttpd#FastCGI]], e.g. by adding {{ic|code=server.modules += ( "mod_fastcgi" )}} to {{ic|/etc/lighttpd/lighttpd.conf}}.<br />
<br />
Create a link to {{ic|/usr/share/webapps/nextcloud}} in your {{ic|/srv/http/}} directory (or configured root).<br />
<br />
=== Create data storage directory ===<br />
<br />
Nextcloud needs a directory to store all user files, which has to be writable for the web server. It is recommended to put this directory somewhere outside of {{ic|/usr}}, e.g. {{ic|/var/nextcloud}}.<br />
<br />
{{Note|Replace {{ic|http}} when using a different [[user]]/[[user group]] for the web server.}}<br />
<br />
# mkdir /var/nextcloud<br />
# chown http:http /var/nextcloud<br />
# chmod 750 /var/nextcloud<br />
<br />
=== Fix apps directory permissions ===<br />
<br />
To give the web server read/write access to the ''apps'' directory (e.g. on "Cannot write into "apps" directory"), setup the correct permissions:<br />
<br />
{{Note|Replace {{ic|http}} when using a different [[user]]/[[user group]] for the web server.}}<br />
<br />
# mkdir -p /usr/share/webapps/nextcloud/data<br />
# chown -R http:http /usr/share/webapps/nextcloud/{apps,data}<br />
# chmod 750 /usr/share/webapps/nextcloud/{apps,data}<br />
<br />
=== Explicitly permit Nextcloud directories for php-fpm ===<br />
Since version 7.4 php-fpm is hardened per default and revokes read/write access on {{ic|/usr}} (and sub-directories). Therefore it is also necessary to explicitly give permissions on {{ic|/usr/share/webapps/nextcloud}} directories and the Nextcloud data directory ({{ic|/var/nextcloud}} in the example above).<br />
<br />
Create an {{ic|override.conf}} for {{ic|php-fpm}}:<br />
# systemctl edit php-fpm.service<br />
<br />
Add and save following content.<br />
{{hc|/etc/systemd/system/php-fpm.service.d/override.conf|2=<br />
[Service]<br />
ReadWritePaths = /usr/share/webapps/nextcloud/apps<br />
ReadWritePaths = /usr/share/webapps/nextcloud/data<br />
ReadWritePaths = /etc/webapps/nextcloud/config<br />
<br />
# Replace the following path with the Nextcloud data directory<br />
ReadWritePaths = /var/nextcloud<br />
}}<br />
<br />
Afterwards [[restart]] the {{ic|php-fpm}} service.<br />
<br />
== Initialize ==<br />
<br />
Open the address where you have installed Nextcloud in a web browser (e.g., https://www.example.com/nextcloud). Enter the database details and the location of the data directory (e.g. {{ic|/var/nextcloud}}) set up above.<br />
<br />
If you get the error message "Cannot write into "apps" directory", make sure you followed [[#Fix apps directory permissions]] above.<br />
<br />
=== Configure caching ===<br />
<br />
It is recommended to [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html enable caching]. The Nextcloud documentation provides instructions on [[Redis]], Memcached and [[PHP#APCu|APCu]].<br />
<br />
== Security Hardening ==<br />
<br />
See the [https://docs.nextcloud.com/server/latest/admin_manual/installation/harden_server.html Nextcloud documentation] and [[Security]]. Nextcloud additionally provides a [https://scan.nextcloud.com/ Security scanner].<br />
<br />
=== uWSGI ===<br />
<br />
You can run Nextcloud in its own process and service by using the [[uWSGI]] application server with {{pkg|uwsgi-plugin-php}}. This allows you to define a [[PHP#Configuration|PHP configuration]] only for this instance of PHP, without the need to edit the global {{ic|php.ini}} and thus keeping your web application configurations compartmentalized. ''uWSGI'' itself has a wealth of features to limit the resource use and to harden the security of the application, and by being a separate process it can run under its own user.<br />
<br />
The only part that differs from [[#Nginx]] is the {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} block:<br />
<br />
{{bc|<nowiki><br />
location ~ \.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/nextcloud.sock;<br />
}<br />
</nowiki>}}<br />
<br />
Then create a config file for ''uWSGI'':<br />
<br />
{{hc|/etc/uwsgi/nextcloud.ini|<nowiki><br />
[uwsgi]<br />
; load the required plugins<br />
plugins = php<br />
; force the sapi name to 'apache', this will enable the opcode cache <br />
php-sapi-name = apache<br />
<br />
; set master process name and socket<br />
; '%n' refers to the name of this configuration file without extension<br />
procname-master = uwsgi %n<br />
master = true<br />
socket = /run/uwsgi/%n.sock<br />
<br />
; drop privileges<br />
uid = http<br />
gid = http<br />
umask = 027<br />
<br />
; run with at least 1 process but increase up to 4 when needed<br />
processes = 4<br />
cheaper = 1<br />
<br />
; reload whenever this config file changes<br />
; %p is the full path of the current config file<br />
touch-reload = %p<br />
<br />
; disable uWSGI request logging<br />
;disable-logging = true<br />
<br />
; enforce a DOCUMENT_ROOT<br />
php-docroot = /usr/share/webapps/%n<br />
; limit allowed extensions<br />
php-allowed-ext = .php<br />
; and search for index.php if required<br />
php-index = index.php<br />
<br />
; set php configuration for this instance of php, no need to edit global php.ini<br />
php-set = date.timezone=Etc/UTC<br />
;php-set = open_basedir=/tmp/:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom<br />
php-set = expose_php=false<br />
; avoid security risk of leaving sessions in world-readable /tmp<br />
php-set = session.save_path=/usr/share/webapps/nextcloud/data<br />
<br />
; port of php directives set upstream in /usr/share/webapps/nextcloud/.user.ini for use with PHP-FPM<br />
php-set = upload_max_filesize=513M<br />
php-set = post_max_size=513M<br />
php-set = memory_limit=512M<br />
php-set = output_buffering=off<br />
<br />
; load all extensions only in this instance of php, no need to edit global php.ini<br />
;; required core modules<br />
php-set = extension=gd<br />
php-set = extension=iconv<br />
;php-set = extension=zip # enabled by default in global php.ini<br />
<br />
;; database connectors<br />
;; uncomment your selected driver<br />
;php-set = extension=pdo_sqlite<br />
;php-set = extension=pdo_mysql<br />
;php-set = extension=pdo_pgsql<br />
<br />
;; recommended extensions<br />
;php-set = extension=curl # enabled by default in global php.ini<br />
php-set = extension=bz2<br />
php-set = extension=intl<br />
<br />
;; required for specific apps<br />
;php-set = extension=ldap # for LDAP integration<br />
;php-set = extension=ftp # for FTP storage / external user authentication<br />
;php-set = extension=imap # for external user authentication, requires php-imap<br />
<br />
;; recommended for specific apps<br />
;php-set = extension=exif # for image rotation in pictures app, requires exiv2<br />
;php-set = extension=gmp # for SFTP storage<br />
<br />
;; for preview generation<br />
;; provided by packages in AUR<br />
; php-set = extension=imagick<br />
<br />
; opcache<br />
php-set = zend_extension=opcache<br />
<br />
; user cache<br />
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini<br />
php-set = extension=apcu<br />
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL<br />
php-set = apc.ttl=7200<br />
php-set = apc.enable_cli=1<br />
<br />
; web server is already handling URL rewriting, so tell NextCloud not to repeat this<br />
env = front_controller_active=true<br />
<br />
cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/nextcloud/cron.php 1>/dev/null<br />
</nowiki>}}<br />
<br />
{{Note|1=<br />
* Do not forget to set your timezone and uncomment the required database connector in the uWSGI config file<br />
* The [[PHP#Configuration|open_basedir]] directive is optional and commented out. You can uncomment to harden security. Be aware that it may [https://github.com/owncloud/core/search?q=open_basedir&type=Issues occasionally break things].<br />
* Use {{ic|1=php-docroot = /usr/share/webapps}} if placing nextcloud in /nextcloud subdirectory.<br />
}}<br />
<br />
{{Warning|The way the [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html Nextcloud background job] is currently set up with [https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] will make use of the default global configuration from {{ic|/etc/php/php.ini}}. This means that none of the specific parameters defined (e.g. required modules) will be enabled, [https://github.com/owncloud/core/issues/12678#issuecomment-66114448 leading to various issues]. One solution is to copy {{ic|/etc/php/php.ini}} to e.g. {{ic|/etc/uwsgi/cron-php.ini}}, make the required modifications there (mirroring {{ic|/etc/uwsgi/nextcloud.ini}} parameters) and referencing it in the cron directive by adding the {{ic|-c /etc/uwsgi/cron-php.ini}} option to ''php'' invocation.}}<br />
<br />
==== Activation ====<br />
<br />
[[uWSGI]] provides a [[Systemd#Using_units|template unit]] that allows to start and enable application using their configuration file name as instance identifier. For example, [[start]]ing {{ic|uwsgi@nextcloud.socket}} would start it on demand referencing the configuration file {{ic|/etc/uwsgi/nextcloud.ini}}. <br />
<br />
To enable the uwsgi service by default at start-up, [[enable]] {{ic|uwsgi@nextcloud.socket}}.<br />
<br />
{{Note|Here we make use of [http://0pointer.de/blog/projects/socket-activation.html systemd socket activation] to prevent unnecessary resources consumption when no connections are made to the instance. If you would rather have it constantly active, simply remove the {{ic|.socket}} part to start and enable the service instead.}}<br />
<br />
See also [[UWSGI#Running uWSGI]].<br />
<br />
=== Setting strong permissions for the filesystem ===<br />
<br />
You should set the permissions for {{ic|config/}}, {{ic|data/}} and {{ic|apps/}} as strict possible. That means that your HTTP user (''http'' in case of {{pkg|apache}}) should own them, and the should have {{ic|700}} permissions. You can use the following script to achieve this.<br />
<br />
{{Style|Complex script for trivial one-time task.}}<br />
<br />
{{hc|oc-perms|2=<nowiki><br />
#!/bin/bash<br />
ocpath='/usr/share/webapps/nextcloud'<br />
htuser='http'<br />
htgroup='http'<br />
rootuser='root'<br />
<br />
printf "Creating possible missing Directories\n"<br />
mkdir -p $ocpath/data<br />
mkdir -p $ocpath/assets<br />
<br />
printf "chmod Files and Directories\n"<br />
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640<br />
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750<br />
<br />
printf "chown Directories\n"<br />
chown -R ${rootuser}:${htgroup} ${ocpath}/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/apps/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/assets/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/config/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/data/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/themes/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/updater/<br />
<br />
chmod +x ${ocpath}/occ<br />
<br />
printf "chmod/chown .htaccess\n"<br />
if [ -f ${ocpath}/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess<br />
fi<br />
if [ -f ${ocpath}/data/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/data/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess<br />
fi<br />
</nowiki>}}<br />
<br />
If you have customized your Nextcloud installation and your filepaths are different than the standard installation, then modify this script accordingly.<br />
<br />
== Synchronization ==<br />
<br />
=== Desktop ===<br />
<br />
The official client can be installed with the {{Pkg|owncloud-client}} or {{Pkg|nextcloud-client}} package.<br />
Alternative versions are available in the [[AUR]]: {{AUR|owncloud-client-git}}. All of them use {{Pkg|qtkeychain}} to store and retrieve account-specific access tokens. To achieve auto-login when the client starts, one of optional dependencies of ''qtkeychain'' should be installed as well. Moreover, if you choose {{Pkg|libsecret}} as the backend for ''qtkeychain'', a service that provides [https://www.archlinux.org/packages/?q=org.freedesktop.secrets org.freedesktop.secrets] should be running when the client starts.<br />
<br />
==== Calendar ====<br />
<br />
To access your Nextcloud calendars using Mozilla [[Thunderbird]]'s Lightning calendar you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME</nowiki><br />
<br />
To access your Nextcloud calendars using CalDAV-compatible programs like Kontact or [[Evolution]], you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav</nowiki><br />
<br />
For details see the [https://docs.nextcloud.com/server/latest/user_manual/pim/index.html official documentation].<br />
<br />
==== Contacts ====<br />
<br />
To sync contacts with [[Thunderbird]], see [https://docs.nextcloud.com/server/latest/user_manual/pim/sync_thunderbird.html these instructions] from the official doc.<br />
<br />
==== Mounting files with davfs2 ====<br />
<br />
If you want to mount your Nextcloud using WebDAV, install {{Pkg|davfs2}} (as described in [[davfs2]]).<br />
<br />
To mount your Nextcloud, use:<br />
<br />
# mount -t davfs https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount<br />
<br />
You can also create an entry for this in {{ic|/etc/fstab}}<br />
<br />
{{hc|/etc/fstab|<br />
https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount davfs rw,user,noauto 0 0<br />
}}<br />
<br />
{{Tip|In order to allow automount you can also store your username (and password if you like) in a file as described in [[davfs2#Storing credentials]].}}<br />
<br />
{{Note|If creating/copying files is not possible, while the same operations work on directories, see [[davfs2#Creating/copying files not possible and/or freezes]].}}<br />
<br />
=== Mounting files in GNOME Files (Nautilus) ===<br />
<br />
You can access the files directly in Nautilus ('+ Other Locations') through WebDAV protocol - use the link as shown in your Nextcloud installation Web GUI (typically: https://example.org/remote.php/webdav/) but replace the protocol name from 'https' to 'davs'. Nautilus will ask for user name and password when trying to connect.<br />
<br />
=== Android ===<br />
<br />
Download the official Nextcloud app from [https://play.google.com/store/apps/details?id=com.nextcloud.client Google Play] or [https://f-droid.org/packages/com.nextcloud.client/ F-Droid].<br />
<br />
To enable contacts and calendar sync (Android 4+):<br />
# download [https://www.davx5.com/ DAVx<sup>5</sup>] ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play Store], [https://f-droid.org/app/at.bitfire.davdroid F-Droid])<br />
# Enable mod_rewrite.so in httpd.conf<br />
# create a new DAVdroid account in the ''Account'' settings, and specify your "short" server address and login/password couple, e.g. {{ic|<nowiki>https://cloud.example.com</nowiki>}} (there is no need for the {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} part if you configured your web server with the proper redirections, as illustrated previously in the article; ''DAVdroid'' will find itself the right URLs)<br />
<br />
=== iOS ===<br />
<br />
Download the official Nextcloud app from the [https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Running NextCloud in a subdirectory ===<br />
<br />
By including the default {{ic|nextcloud.conf}} in {{ic|httpd.conf}}, nextCloud will take control of port 80 and your localhost domain. <br />
<br />
If you would like to have nextCloud run in a subdirectory, then <br />
<br />
For apache, edit the {{ic|/etc/httpd/conf/extra/nextcloud.conf}} you included and comment out the {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} part of the include file.<br />
<br />
For nginx, you can use the following config when using nextcloud with uwsgi:<br />
<br />
{{hc|head=/etc/nginx/conf.d/nextcloud.conf|output=<nowiki><br />
location = /.well-known/carddav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location = /.well-known/caldav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location /.well-known/acme-challenge { }<br />
<br />
location ^~ /nextcloud {<br />
<br />
root /usr/share/webapps;<br />
<br />
# set max upload size<br />
client_max_body_size 512M;<br />
fastcgi_buffers 64 4K;<br />
<br />
# Disable gzip to avoid the removal of the ETag header<br />
gzip off;<br />
<br />
# Uncomment if your server is build with the ngx_pagespeed module<br />
# This module is currently not supported.<br />
#pagespeed off;<br />
<br />
location /nextcloud {<br />
rewrite ^ /nextcloud/index.php$uri;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:updater|ocs-provider)(?:$|/) {<br />
try_files $uri/ =404;<br />
index index.php;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
}<br />
<br />
# Adding the cache control header for js and css files<br />
# Make sure it is BELOW the PHP block<br />
location ~* \.(?:css|js) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
add_header Cache-Control "public, max-age=7200";<br />
# Add headers to serve security related headers (It is intended<br />
# to have those duplicated to the ones above)<br />
# Before enabling Strict-Transport-Security headers please read<br />
# into this topic first.<br />
# add_header Strict-Transport-Security "max-age=15768000;<br />
# includeSubDomains; preload;";<br />
add_header X-Content-Type-Options nosniff;<br />
add_header X-Frame-Options "SAMEORIGIN";<br />
add_header X-XSS-Protection "1; mode=block";<br />
add_header X-Robots-Tag none;<br />
add_header X-Download-Options noopen;<br />
add_header X-Permitted-Cross-Domain-Policies none;<br />
# Optional: Do not log access to assets<br />
access_log off;<br />
}<br />
<br />
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
# Optional: Do not log access to other assets<br />
access_log off;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
{{Note| Do not forget to configure the {{ic |.well-known}} URLs for service discovery. For more information please see [https://docs.nextcloud.com/server/18/admin_manual/issues/general_troubleshooting.html#service-discovery General troubleshooting and service discovery section of Nextcloud documentation]. }}<br />
<br />
=== Docker ===<br />
<br />
See the [https://hub.docker.com/_/owncloud/ ownCloud] or [https://github.com/nextcloud/docker Nextcloud] repository for [[Docker]].<br />
<br />
=== Upload and share from File Manager ===<br />
<br />
[https://github.com/schiesbn/shareLinkCreator shareLinkCreator] provides the ability to upload a file to<br />
OwnCloud via a supported file manager and receive a link to the uploaded file which can then be emailed or shared in another way.<br />
<br />
=== Defining Background Jobs ===<br />
<br />
Nextcloud requires scheduled execution of some tasks, and by default it achieves this by using AJAX,<br />
however AJAX is the least reliable method, and it is recommended to use [[Cron]] instead. However,<br />
ArchLinux ships with {{Pkg|systemd}}, so the preferred way of executing scheduled tasks is a [[Systemd#Timers|systemd timer]]. <br />
<br />
==== Manual install ====<br />
<br />
First create a service:<br />
<br />
{{hc|/etc/systemd/system/nextcloudcron.service|<nowiki><br />
[Unit]<br />
Description=Nextcloud cron.php job<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/php -f /usr/share/webapps/nextcloud/cron.php<br />
<br />
[Install]<br />
WantedBy=basic.target<br />
</nowiki>}}<br />
<br />
Then create a timer for that service:<br />
<br />
{{hc|/etc/systemd/system/nextcloudcron.timer|<nowiki><br />
[Unit]<br />
Description=Run Nextcloud cron.php every 15 minutes<br />
<br />
[Timer]<br />
OnBootSec=5min<br />
OnUnitActiveSec=15min<br />
Unit=nextcloudcron.service<br />
<br />
[Install]<br />
WantedBy=timers.target<br />
</nowiki>}}<br />
<br />
==== Activate timer ====<br />
<br />
[[Start/enable]] {{ic|nextcloudcron.timer}}.<br />
<br />
Confirm that it is running by running<br />
<br />
# systemctl list-timers<br />
<br />
==== AUR package ====<br />
<br />
Install {{AUR|nextcloud-systemd-timers}}.<br />
<br />
Provided services can be checked with:<br />
$ pacman -Ql nextcloud-systemd-timers<br />
<br />
For instance, to run the <code>cron.php</code> script every 15 minutes:<br />
# systemctl start nextcloud-cron.timer<br />
# systemctl enable nextcloud-cron.timer<br />
<br />
=== Collabora Online Office integration ===<br />
<br />
{{Expansion|What is the correct {{ic|domain}} (or {{ic|server_name}} in the config) when [[#Running NextCloud in a subdirectory|Nextcloud runs in a subdirectory]]?}}<br />
<br />
==== Solution with Docker ====<br />
<br />
The first, install a {{Pkg|docker}} package to provide collabora files and setup a Collabora server.<br />
<br />
[[Start/enable]] {{ic|docker.service}}.<br />
<br />
Then, download the official Docker image:<br />
<br />
# docker pull collabora/code<br />
<br />
And, installing a Collabora server. Make sure {{ic|cloud//.example//.com}} is your nextcloud's domain, not a collabora :<br />
<br />
# docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.example\\.com' --restart always --cap-add MKNOD collabora/code<br />
<br />
Also make sure to escape all dots with double backslashes (\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you will need to use 'domain=cloud\\.example\\.com\|second\\.example\\.com' instead. (All hosts are separated by \|.) When using `localhost` as domain for testing you need to add {{ic|--net host}} to ensure the docker container can access your Nextcloud server. <br />
<br />
If you need to delete or reinstall Collabora server use:<br />
<br />
For recognition CONTAINER_ID of server<br />
<br />
# docker ps<br />
<br />
Stop and delete<br />
<br />
# docker stop CONTAINER_ID<br />
# docker rm CONTAINER_ID<br />
<br />
Futher, follow the instruction of webserver you are using:<br />
<br />
'''Nginx setup example:'''<br />
<br />
Add following to your nextcloud domain config or add new config file in /etc/nginx/conf.d/ directory, (Do not forget to change {{ic|office.example.com}} and {{ic|ssl_certificate}} to the right values. If you are using docker image, change {{ic|http}} to {{ic|https}}.)<br />
<br />
{{hc|/etc/nginx/conf.d/example.conf|<nowiki><br />
upstream office.example.com {<br />
server 127.0.0.1:9980;<br />
}<br />
<br />
server {<br />
listen 443 ssl;<br />
server_name office.example.com;<br />
<br />
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;<br />
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;<br />
<br />
# static files<br />
location ^~ /loleaflet {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# WOPI discovery URL<br />
location ^~ /hosting/discovery {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# Main websocket<br />
location ~ /lool/(.*)/ws$ {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# Admin Console websocket<br />
location ^~ /lool/adminws {<br />
proxy_buffering off;<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# download, presentation and image upload<br />
location ~ /lool {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
Restart a nginx:<br />
<br />
# nginx -s reload<br />
<br />
or [[restart]] {{ic|nginx.service}}.<br />
<br />
'''Apache setup example:'''<br />
<br />
Add following to nextcloud config file. Do not forget to change to the right values<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|<nowiki><br />
<VirtualHost *:443><br />
ServerName office.nextcloud.com:443<br />
<br />
# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!<br />
SSLEngine on<br />
SSLCertificateFile /path/to/signed_certificate<br />
SSLCertificateChainFile /path/to/intermediate_certificate<br />
SSLCertificateKeyFile /path/to/private/key<br />
SSLProtocol all -SSLv2 -SSLv3<br />
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS<br />
SSLHonorCipherOrder on<br />
<br />
# Encoded slashes need to be allowed<br />
AllowEncodedSlashes NoDecode<br />
<br />
# Container uses a unique non-signed certificate<br />
SSLProxyEngine On<br />
SSLProxyVerify None<br />
SSLProxyCheckPeerCN Off<br />
SSLProxyCheckPeerName Off<br />
<br />
# keep the host<br />
ProxyPreserveHost On<br />
<br />
# static html, js, images, etc. served from loolwsd<br />
# loleaflet is the client part of LibreOffice Online<br />
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0<br />
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet<br />
<br />
# WOPI discovery URL<br />
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0<br />
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery<br />
<br />
# Main websocket<br />
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon<br />
<br />
# Admin Console websocket<br />
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws<br />
<br />
# Download as, Fullscreen presentation and Image upload operations<br />
ProxyPass /lool https://127.0.0.1:9980/lool<br />
ProxyPassReverse /lool https://127.0.0.1:9980/lool<br />
</VirtualHost><br />
</nowiki>}}<br />
<br />
After configuring these do restart your apache by [[restart]]ing {{ic|httpd.service}}.<br />
<br />
'''Install the Nextcloud app'''<br />
<br />
Go to the Apps section and choose “Office & Text”, install the “Collabora Online” app. In admin panel select Collabora Online tab and specific the server's domain you have setup before.<br />
<br />
==== Solution without Docker ====<br />
<br />
The {{AUR|collabora-online-server-nodocker}} package provides the Collabora Office (the desktop suite) and the “CODE” (Collabora Online Development Edition) server, which is based on “lool” (LibreOffice OnLine).<br />
<br />
Alter the {{ic|/etc/loolwsd/loolwsd.xml}} file, so that:<br />
<br />
* {{ic|config > server_name}} contains the host and port of the public Nextcloud address, separated by a colon (e.g. {{ic|example.org:443}}),<br />
* {{ic|config > ssl > enable}} is false (i.e. web browser —HTTPS→ proxy —HTTP→ loolwsd),<br />
* {{ic|config > ssl > termination}} is true (I suppose you’ll manage TLS at the proxy level),<br />
* {{ic|config > storage > wopi > host}} reflects the actual hostname (or pattern) of the proxy server (e.g. {{ic|(?:.*\.)?example\.org}}),<br />
* {{ic|config > admin_console > username}} and {{ic|config > admin_console > password}} are set to values of your choice.<br />
<br />
Then:<br />
<br />
{{Out of date|{{ic|/usr/share/doc/loolwsd/example.nginx.conf}} does not exist.}}<br />
<br />
* [[start]] and [[enable]] {{ic|loolwsd.service}};<br />
* configure Nginx as showed in {{ic|/usr/share/doc/loolwsd/example.nginx.conf}}, and restart it.<br />
<br />
== Troubleshooting ==<br />
{{Out of date|A lot of references to OwnCloud, are these still valid with Nextcloud?}}<br />
<br />
By default, the nextcloud.log is available in /usr/share/webapps/nextcloud/data.<br />
<br />
=== Environment variables not available ===<br />
<br />
Uncomment the line in {{ic|/etc/php/php-fpm.d/www.conf}} as per [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#php-fpm-tips-label Nextcloud documentation]:<br />
env[PATH] = /usr/local/bin:/usr/bin:/bin<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
ownCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if WebDAV is enabled.<br />
If you use SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]], and access ownCloud's admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]] tutorial, execute the following steps:<br />
<br />
Create a local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{ic|ca-certificates}}-updates from overwriting it.<br />
<br />
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
# update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
=== Self-signed certificate for Android devices ===<br />
<br />
Once you have followed the setup for SSL, as on [[Apache HTTP Server#TLS]] for example, early versions of DAVdroid will<br />
reject the connection because the certificate is not trusted. A certificate can be made as follows on your server:<br />
<br />
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt<br />
# openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt <br />
<br />
The file {{ic|android.txt}} should contain the following:<br />
<br />
basicConstraints=CA:true<br />
<br />
Then import {{ic|CA.der.crt}} to your Android device:<br />
<br />
Put the {{ic|CA.der.crt}} file onto the sdcard of your Android device (usually to the internal one, e.g. save from a mail attachment).<br />
It should be in the root directory. Go to ''Settings > Security > Credential storage'' and select ''Install from device storage''.<br />
The {{ic|.crt}} file will be detected and you will be prompted to enter a certificate name. After importing the certificate,<br />
you will find it in ''Settings > Security > Credential storage > Trusted credentials > User''.<br />
<br />
Thanks to: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]{{Dead link|2020|04|01|status=404}}<br />
<br />
Another way is to import the certificate directly from your server via [https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid]{{Dead link|2020|04|01|status=404}} and follow the instructions there.<br />
<br />
=== Cannot write into config directory! ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes {{ic|/etc/webapps}}.<br />
<br />
Restart the web server to apply the change.<br />
<br />
If you are getting this error after an upgrade from Nextcloud 17 to Nextcloud 18, also see [[#Explicitly permit Nextcloud directories for php-fpm]].<br />
<br />
=== Cannot create data directory ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes the data directory.<br />
<br />
Restart the web server to apply the change.<br />
<br />
=== CSync failed to find a specific file. ===<br />
<br />
This is most likely a certificate issue. Recreate it, and do not leave the common name empty or you will see the error again.<br />
<br />
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed. To fix that, you can use the occ command as described<br />
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html here]. So with<br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:list<br />
<br />
you can list all apps (if you installed nextcloud in the standard directory), and with <br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:disable <nameOfExtension><br />
<br />
you can disable the troubling app.<br />
<br />
Alternatively, you can either use [[phpMyAdmin]] to edit the {{ic|oc_appconfig}} table (if you got lucky and the table has an edit option), or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes';<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic authentication, make sure to exclude "status.php", which must be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== GUI tray icon disappears, but client still running in the background ===<br />
<br />
After waking up from a suspended state, the Nextcloud client tray icon may disappear from the system tray. A workaround is to delay the startup of the client, as noted [https://github.com/nextcloud/desktop/issues/203#issuecomment-463957811 here]. This can be done with the .desktop file, for example:<br />
<br />
{{hc|.local/share/applications/nextcloud.desktop|<nowiki><br />
...<br />
Exec=bash -c 'sleep 5 && nextcloud'<br />
...<br />
</nowiki>}}<br />
<br />
=== Some files upload, but give an error 'Integrity constraint violation...' ===<br />
<br />
You may see the following error in the ownCloud sync client:<br />
<br />
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...<br />
<br />
This is caused by an issue with the File Locking app, which is often not sufficient to keep conflicts from occurring on some webserver configurations.<br />
A more complete [https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking]<br />
is available that rids these errors, but you must be using the Redis php-caching method. Install {{Pkg|redis}} and {{Pkg|php-redis}}, comment out<br />
your current php-cache mechanism, and then in {{ic|/etc/php/conf.d/redis.ini}} uncomment {{ic|1=extension=redis}}.<br />
Then in {{ic|config.php}} make the following changes:<br />
<br />
'memcache.local' => '\OC\Memcache\Redis',<br />
'filelocking.enabled' => 'true',<br />
'memcache.locking' => '\OC\Memcache\Redis',<br />
'redis' => array(<br />
'host' => 'localhost',<br />
'port' => 6379,<br />
'timeout' => 0.0,<br />
),<br />
<br />
and [[start/enable]] {{ic|redis.service}}.<br />
<br />
Finally, disable the File Locking App, as the Transational File Locking will take care of it (and would conflict).<br />
<br />
If everything is working, you should see 'Transactional File Locking Enabled' under Server Status on the Admin page, and syncs should no longer cause issues.<br />
<br />
=== "Cannot write into apps directory" ===<br />
<br />
As mentioned in the [https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html official admin manual],<br />
either you need an apps directory that is writable by the http user, or you need to set {{ic|appstoreenabled}} to {{ic|false}}. <br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), it may be necessary to add your ''/path/to/data'' directory to the string on the line starting with {{ic|php_admin_value open_basedir }}:<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|2=<br />
<br />
php_admin_value open_basedir "''/path/to/data/'':/srv/http/:/dev/urandom:/tmp/:/usr/share/pear/:/usr/share/webapps/nextcloud/:/etc/webapps/nextcloud"<br />
}}<br />
<br />
=== Installed apps get blocked because of MIME type error ===<br />
<br />
If you are putting your apps folder outside of the nextcloud installation directory make sure your webserver serves it properly.<br />
<br />
In nginx this is accomplished by adding a location block to the nginx configuration as the folder will not be included in it by default.<br />
<br />
location ~ /apps2/(.*)$ {<br />
alias /var/www/nextcloud/apps/$1;<br />
}<br />
<br />
=== Security warnings even though the recommended settings have been included in nginx.conf ===<br />
<br />
At the top of the admin page there might be a warning to set the {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}},<br />
{{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}} and {{ic|X-Robots-Tag}} according to https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/harden_server.html{{Dead link|2020|04|01|status=404}}<br />
even though they are already set like that.<br />
<br />
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:<br />
<br />
{{hc|$ curl -I https://domain.tld|<nowiki><br />
...<br />
X-XSS-Protection: 1; mode=block<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: Sameorigin<br />
X-Robots-Tag: none<br />
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: SAMEORIGIN<br />
X-XSS-Protection: 1; mode=block<br />
X-Robots-Tag: none<br />
</nowiki>}}<br />
<br />
While the fast_cgi sample config has a parameter to avoid that ( {{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}} ), when using uwsgi and nginx the following modification of the uwsgi part in nginx.conf could help:<br />
<br />
{{hc| /etc/nginx/nginx.conf|<nowiki><br />
...<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_hide_header X-Frame-Options;<br />
#Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
#uwsgi_pass 127.0.0.1:3001;<br />
}<br />
...<br />
</nowiki>}}<br />
<br />
=== "Reading from keychain failed with error: 'No keychain service available'" ===<br />
<br />
Can be fixed for Gnome by installing the following 2 packages, {{Pkg|libgnome-keyring}} and {{Pkg|gnome-keyring}}.<br />
Or the following for KDE, {{Pkg|libgnome-keyring}} and {{Pkg|qtkeychain}}.<br />
<br />
=== FolderSync: "Method Not Allowed" ===<br />
<br />
FolderSync needs access to {{ic|/owncloud/remote.php/webdav}}, so you could create another alias for owncloud in your {{ic|/etc/httpd/conf/extra/nextcloud.conf}}<br />
<br />
<IfModule mod_alias.c><br />
Alias /nextcloud /usr/share/webapps/nextcloud/<br />
Alias /owncloud /usr/share/webapps/nextcloud/<br />
</IfModule><br />
<br />
== See also ==<br />
<br />
* [https://docs.nextcloud.com/ Nextcloud Documentation Overview]<br />
* [https://docs.nextcloud.com/server/latest/admin_manual/ Nextcloud Admin Manual]</div>Milkhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=611579Nextcloud2020-05-08T22:24:31Z<p>Milk: /* Troubleshooting */ add note about the log location</p>
<hr />
<div>[[Category:File sharing]]<br />
[[Category:Web applications]]<br />
[[fr:Owncloud]]<br />
[[ja:Nextcloud]]<br />
{{Related articles start}}<br />
{{Related|Apache HTTP Server}}<br />
{{Related|Nginx}}<br />
{{Related|OpenSSL}}<br />
{{Related|WebDAV}}<br />
{{Related articles end}}<br />
<br />
From [[Wikipedia:Nextcloud]]:<br />
<br />
:Nextcloud is a suite of client-server software for creating and using file hosting services. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server. In contrast to proprietary services like Dropbox, the open architecture allows adding additional functionality to the server in form of applications.<br />
<br />
Nextcloud is a fork of ownCloud. For differences between the two, see [[wikipedia:Nextcloud#Differences to ownCloud]].<br />
<br />
== Prerequisites ==<br />
<br />
Nextcloud requires several components:[https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server]<br />
<br />
* A web server: [[Apache]] or [[nginx]]<br />
* A database: [[MariaDB]]/MySQL, [[PostgreSQL]], [[SQLite]] or [[Oracle]]<br />
* [[PHP]] with [[#PHP setup|additional modules]]<br />
<br />
These will be configured in [[#Setup]].<br />
<br />
Make sure the required components are installed before proceeding.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|nextcloud}} package.<br />
<br />
=== Pacman hook ===<br />
<br />
To upgrade the Nextcloud database automatically on updates, you may want to create a [[pacman hook]]:<br />
<br />
{{hc|/etc/pacman.d/hooks/nextcloud.hook|2=<br />
[Trigger]<br />
Operation = Install<br />
Operation = Upgrade<br />
Type = Package<br />
Target = nextcloud<br />
Target = nextcloud-app-*<br />
<br />
[Action]<br />
Description = Update Nextcloud installation<br />
When = PostTransaction<br />
Exec = /usr/bin/runuser -u http -- /usr/bin/php /usr/share/webapps/nextcloud/occ upgrade<br />
}}<br />
<br />
== Setup ==<br />
<br />
As stated above, in order to setup Nextcloud, you must set up the appropriate PHP requirements;<br />
additionally, you must configure a database and a webserver.<br />
<br />
=== PHP setup ===<br />
<br />
{{Tip|For all prerequisite PHP modules, see [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#prerequisites-label upstream documentation].}}<br />
<br />
Install [[PHP#gd]] and {{pkg|php-intl}} as additional modules. Configure [[PHP#OPCache|OPcache]] as recommended by [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache the documentation].<br />
<br />
Some apps (''News'' for example) require the {{ic|iconv}} extension, if you wish to use these apps, uncomment the extension in {{ic|/etc/php/php.ini}}.<br />
<br />
Depending on which database backend will be used:<br />
<br />
* For [[MySQL]], see [[PHP#MySQL/MariaDB]].<br />
* For [[PostgreSQL]], see [[PHP#PostgreSQL]].<br />
* For [[SQLite]], see [[PHP#Sqlite]].<br />
<br />
Performance may be improved through the implementation of [[PHP#Caching|caching]], see<br />
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html Configuring Memory Caching]<br />
on the official documentation for details.<br />
<br />
=== Database setup ===<br />
<br />
An SQL database must be setup and used for your Nextcloud installation. After setting up the database here,<br />
you will be prompted for its information when you first create an administrator account.<br />
<br />
==== MariaDB ====<br />
<br />
It is recommended to set up an own database and user when using [[MariaDB]]:<br />
<br />
{{hc|$ mysql -u root -p|2=<br />
mysql> CREATE DATABASE '''nextcloud''' DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';<br />
mysql> GRANT ALL PRIVILEGES ON '''nextcloud'''.* TO ''''nextcloud''''@'localhost' IDENTIFIED BY ''''password'''';<br />
mysql> FLUSH PRIVILEGES;<br />
mysql> \q<br />
}}<br />
<br />
{{Note|Create or convert the database with MySQL 4-byte support in order to use Emojis (textbased smilies) on your Nextcloud server [https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/mysql_4byte_support.html].}}<br />
<br />
==== PostgreSQL ====<br />
<br />
The following is an example of setting up a [[PostgreSQL]] user and database:<br />
<br />
{{hc|1=[postgres]$ createuser -h localhost -P nextcloud|2=<br />
Enter password for new role:<br />
Enter it again:<br />
}}<br />
<br />
[postgres]$ createdb -O nextcloud nextcloud<br />
<br />
=== Web server setup ===<br />
<br />
{{Warning|It is recommended to use HTTPS instead of plain HTTP, see [[Apache#TLS]] or [[Nginx#TLS]] for examples and implement this in the examples given below.}}<br />
<br />
Depending on which [[web server]] you are using, further setup is required, indicated below.<br />
<br />
==== Apache ====<br />
<br />
If you have not already, install [[Apache]] and install and enable [[Apache#PHP|Apache's PHP module]]<br />
<br />
Copy the Apache configuration file to the configuration directory:<br />
<br />
# cp /etc/webapps/nextcloud/apache.example.conf /etc/httpd/conf/extra/nextcloud.conf<br />
<br />
Modify the file according to your preferences. By default it includes an alias for {{ic|/nextcloud}} pointing to {{ic|/usr/share/webapps/nextcloud}}.<br />
<br />
And include it in {{ic|/etc/httpd/conf/httpd.conf}}:<br />
<br />
Include conf/extra/nextcloud.conf<br />
<br />
Ensure that the root location of your Nextcloud installation (e.g., {{ic|/usr/share/webapps/nextcloud}}) is accessible by the webserver's user {{ic|http}}.<br />
<br />
Now restart Apache ({{ic|httpd.service}}).<br />
<br />
===== WebDAV =====<br />
<br />
Nextcloud comes with its own [[WebDAV]] implementation enabled, which may conflict with the one shipped with Apache. If you have enabled WebDAV in Apache (not enabled by default), disable the modules {{ic|mod_dav}} and {{ic|mod_dav_fs}} in {{ic|/etc/httpd/conf/httpd.conf}}. See [https://forum.owncloud.org/viewtopic.php?f=17&t=7240] for details.<br />
<br />
==== Nginx ====<br />
<br />
Make sure PHP-FPM has been configured correctly as described in [[Nginx#FastCGI]]. Uncomment {{ic|1=env[PATH]}} in {{ic|/etc/php/php-fpm.d/www.conf}} as it is required by Nextcloud.<br />
<br />
Remember to set up {{ic|1=env[TMP]}} in {{ic|/etc/php/php-fpm.d/www.conf}} and make sure the directory is writable from the Nginx user.<br />
<br />
Create a [[Nginx#Server_blocks|server block]] and add the content according to the [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html Nextcloud documentation]:<br />
<br />
{{Note|Use {{ic|/usr/share/webapps/nextcloud}} as {{ic|root}} location when using {{Pkg|nextcloud}}.}}<br />
{{Tip|See the [https://github.com/graysky2/configs/blob/master/nginx/nextcloud-initial.conf following template]{{Dead link|2020|04|01|status=404}} as initial configuration when setting up [[Let's Encrypt]].}}<br />
<br />
{{hc|/etc/nginx/sites-available/nextcloud.conf|2=<nowiki><br />
upstream php-handler {<br />
server unix:/run/php-fpm/php-fpm.sock;<br />
}<br />
<br />
server {<br />
listen 443 ssl http2;<br />
listen [::]:443 ssl http2;<br />
server_name cloud.example.com;<br />
<br />
ssl_certificate /etc/ssl/nginx/cloud.example.com.crt;<br />
ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;<br />
<br />
# ..<br />
<br />
# Path to the root of your installation<br />
root /usr/share/webapps/nextcloud/;<br />
<br />
# ..<br />
<br />
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {<br />
fastcgi_split_path_info ^(.+\.php)(/.*)$;<br />
try_files $fastcgi_script_name =404;<br />
include fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_param PATH_INFO $fastcgi_path_info;<br />
fastcgi_param HTTPS on; # Comment this line if you don't use HTTPS<br />
<br />
#Avoid sending the security headers twice<br />
fastcgi_param modHeadersAvailable true;<br />
fastcgi_param front_controller_active true;<br />
fastcgi_pass php-handler;<br />
fastcgi_intercept_errors on;<br />
fastcgi_request_buffering off;<br />
<br />
# Change /var/nextcloud/ to your data storage directory.<br />
# Remember to append your env[TMP] directory.<br />
fastcgi_param PHP_VALUE open_basedir="/usr/share/webapps/nextcloud/:/etc/webapps/nextcloud/config/:/var/nextcloud/";<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
==== lighttpd ====<br />
<br />
Enable [[lighttpd#FastCGI]], e.g. by adding {{ic|code=server.modules += ( "mod_fastcgi" )}} to {{ic|/etc/lighttpd/lighttpd.conf}}.<br />
<br />
Create a link to {{ic|/usr/share/webapps/nextcloud}} in your {{ic|/srv/http/}} directory (or configured root).<br />
<br />
=== Create data storage directory ===<br />
<br />
Nextcloud needs a directory to store all user files, which has to be writable for the web server. It is recommended to put this directory somewhere outside of {{ic|/usr}}, e.g. {{ic|/var/nextcloud}}.<br />
<br />
{{Note|Replace {{ic|http}} when using a different [[user]]/[[user group]] for the web server.}}<br />
<br />
# mkdir /var/nextcloud<br />
# chown http:http /var/nextcloud<br />
# chmod 750 /var/nextcloud<br />
<br />
=== Fix apps directory permissions ===<br />
<br />
To give the web server read/write access to the ''apps'' directory (e.g. on "Cannot write into "apps" directory"), setup the correct permissions:<br />
<br />
{{Note|Replace {{ic|http}} when using a different [[user]]/[[user group]] for the web server.}}<br />
<br />
# mkdir -p /usr/share/webapps/nextcloud/data<br />
# chown -R http:http /usr/share/webapps/nextcloud/{apps,data}<br />
# chmod 750 /usr/share/webapps/nextcloud/{apps,data}<br />
<br />
=== Explicitly permit Nextcloud directories for php-fpm ===<br />
Since version 7.4 php-fpm is hardened per default and revokes read/write access on {{ic|/usr}} (and sub-directories). Therefore it is also necessary to explicitly give permissions on {{ic|/usr/share/webapps/nextcloud}} directories and the Nextcloud data directory ({{ic|/var/nextcloud}} in the example above).<br />
<br />
Create an {{ic|override.conf}} for {{ic|php-fpm}}:<br />
# systemctl edit php-fpm.service<br />
<br />
Add and save following content.<br />
{{hc|/etc/systemd/system/php-fpm.service.d/override.conf|2=<br />
[Service]<br />
ReadWritePaths = /usr/share/webapps/nextcloud/apps<br />
ReadWritePaths = /usr/share/webapps/nextcloud/data<br />
ReadWritePaths = /etc/webapps/nextcloud/config<br />
<br />
# Replace the following path with the Nextcloud data directory<br />
ReadWritePaths = /var/nextcloud<br />
}}<br />
<br />
Afterwards [[restart]] the {{ic|php-fpm}} service.<br />
<br />
== Initialize ==<br />
<br />
Open the address where you have installed Nextcloud in a web browser (e.g., https://www.example.com/nextcloud). Enter the database details and the location of the data directory (e.g. {{ic|/var/nextcloud}}) set up above.<br />
<br />
If you get the error message "Cannot write into "apps" directory", make sure you followed [[#Fix apps directory permissions]] above.<br />
<br />
=== Configure caching ===<br />
<br />
It is recommended to [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html enable caching]. The Nextcloud documentation provides instructions on [[Redis]], Memcached and [[PHP#APCu|APCu]].<br />
<br />
== Security Hardening ==<br />
<br />
See the [https://docs.nextcloud.com/server/latest/admin_manual/installation/harden_server.html Nextcloud documentation] and [[Security]]. Nextcloud additionally provides a [https://scan.nextcloud.com/ Security scanner].<br />
<br />
=== uWSGI ===<br />
<br />
You can run Nextcloud in its own process and service by using the [[uWSGI]] application server with {{pkg|uwsgi-plugin-php}}. This allows you to define a [[PHP#Configuration|PHP configuration]] only for this instance of PHP, without the need to edit the global {{ic|php.ini}} and thus keeping your web application configurations compartmentalized. ''uWSGI'' itself has a wealth of features to limit the resource use and to harden the security of the application, and by being a separate process it can run under its own user.<br />
<br />
The only part that differs from [[#Nginx]] is the {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} block:<br />
<br />
{{bc|<nowiki><br />
location ~ \.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/nextcloud.sock;<br />
}<br />
</nowiki>}}<br />
<br />
Then create a config file for ''uWSGI'':<br />
<br />
{{hc|/etc/uwsgi/nextcloud.ini|<nowiki><br />
[uwsgi]<br />
; load the required plugins<br />
plugins = php<br />
; force the sapi name to 'apache', this will enable the opcode cache <br />
php-sapi-name = apache<br />
<br />
; set master process name and socket<br />
; '%n' refers to the name of this configuration file without extension<br />
procname-master = uwsgi %n<br />
master = true<br />
socket = /run/uwsgi/%n.sock<br />
<br />
; drop privileges<br />
uid = http<br />
gid = http<br />
umask = 027<br />
<br />
; run with at least 1 process but increase up to 4 when needed<br />
processes = 4<br />
cheaper = 1<br />
<br />
; reload whenever this config file changes<br />
; %p is the full path of the current config file<br />
touch-reload = %p<br />
<br />
; disable uWSGI request logging<br />
;disable-logging = true<br />
<br />
; enforce a DOCUMENT_ROOT<br />
php-docroot = /usr/share/webapps/%n<br />
; limit allowed extensions<br />
php-allowed-ext = .php<br />
; and search for index.php if required<br />
php-index = index.php<br />
<br />
; set php configuration for this instance of php, no need to edit global php.ini<br />
php-set = date.timezone=Etc/UTC<br />
;php-set = open_basedir=/tmp/:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom<br />
php-set = expose_php=false<br />
; avoid security risk of leaving sessions in world-readable /tmp<br />
php-set = session.save_path=/usr/share/webapps/nextcloud/data<br />
<br />
; port of php directives set upstream in /usr/share/webapps/nextcloud/.user.ini for use with PHP-FPM<br />
php-set = upload_max_filesize=513M<br />
php-set = post_max_size=513M<br />
php-set = memory_limit=512M<br />
php-set = output_buffering=off<br />
<br />
; load all extensions only in this instance of php, no need to edit global php.ini<br />
;; required core modules<br />
php-set = extension=gd<br />
php-set = extension=iconv<br />
;php-set = extension=zip # enabled by default in global php.ini<br />
<br />
;; database connectors<br />
;; uncomment your selected driver<br />
;php-set = extension=pdo_sqlite<br />
;php-set = extension=pdo_mysql<br />
;php-set = extension=pdo_pgsql<br />
<br />
;; recommended extensions<br />
;php-set = extension=curl # enabled by default in global php.ini<br />
php-set = extension=bz2<br />
php-set = extension=intl<br />
<br />
;; required for specific apps<br />
;php-set = extension=ldap # for LDAP integration<br />
;php-set = extension=ftp # for FTP storage / external user authentication<br />
;php-set = extension=imap # for external user authentication, requires php-imap<br />
<br />
;; recommended for specific apps<br />
;php-set = extension=exif # for image rotation in pictures app, requires exiv2<br />
;php-set = extension=gmp # for SFTP storage<br />
<br />
;; for preview generation<br />
;; provided by packages in AUR<br />
; php-set = extension=imagick<br />
<br />
; opcache<br />
php-set = zend_extension=opcache<br />
<br />
; user cache<br />
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini<br />
php-set = extension=apcu<br />
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL<br />
php-set = apc.ttl=7200<br />
php-set = apc.enable_cli=1<br />
<br />
; web server is already handling URL rewriting, so tell NextCloud not to repeat this<br />
env = front_controller_active=true<br />
<br />
cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/nextcloud/cron.php 1>/dev/null<br />
</nowiki>}}<br />
<br />
{{Note|1=<br />
* Do not forget to set your timezone and uncomment the required database connector in the uWSGI config file<br />
* The [[PHP#Configuration|open_basedir]] directive is optional and commented out. You can uncomment to harden security. Be aware that it may [https://github.com/owncloud/core/search?q=open_basedir&type=Issues occasionally break things].<br />
* Use {{ic|1=php-docroot = /usr/share/webapps}} if placing nextcloud in /nextcloud subdirectory.<br />
}}<br />
<br />
{{Warning|The way the [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html Nextcloud background job] is currently set up with [https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] will make use of the default global configuration from {{ic|/etc/php/php.ini}}. This means that none of the specific parameters defined (e.g. required modules) will be enabled, [https://github.com/owncloud/core/issues/12678#issuecomment-66114448 leading to various issues]. One solution is to copy {{ic|/etc/php/php.ini}} to e.g. {{ic|/etc/uwsgi/cron-php.ini}}, make the required modifications there (mirroring {{ic|/etc/uwsgi/nextcloud.ini}} parameters) and referencing it in the cron directive by adding the {{ic|-c /etc/uwsgi/cron-php.ini}} option to ''php'' invocation.}}<br />
<br />
==== Activation ====<br />
<br />
[[uWSGI]] provides a [[Systemd#Using_units|template unit]] that allows to start and enable application using their configuration file name as instance identifier. For example, [[start]]ing {{ic|uwsgi@nextcloud.socket}} would start it on demand referencing the configuration file {{ic|/etc/uwsgi/nextcloud.ini}}. <br />
<br />
To enable the uwsgi service by default at start-up, [[enable]] {{ic|uwsgi@nextcloud.socket}}.<br />
<br />
{{Note|Here we make use of [http://0pointer.de/blog/projects/socket-activation.html systemd socket activation] to prevent unnecessary resources consumption when no connections are made to the instance. If you would rather have it constantly active, simply remove the {{ic|.socket}} part to start and enable the service instead.}}<br />
<br />
See also [[UWSGI#Running uWSGI]].<br />
<br />
=== Setting strong permissions for the filesystem ===<br />
<br />
You should set the permissions for {{ic|config/}}, {{ic|data/}} and {{ic|apps/}} as strict possible. That means that your HTTP user (''http'' in case of {{pkg|apache}}) should own them, and the should have {{ic|700}} permissions. You can use the following script to achieve this.<br />
<br />
{{Style|Complex script for trivial one-time task.}}<br />
<br />
{{hc|oc-perms|2=<nowiki><br />
#!/bin/bash<br />
ocpath='/usr/share/webapps/nextcloud'<br />
htuser='http'<br />
htgroup='http'<br />
rootuser='root'<br />
<br />
printf "Creating possible missing Directories\n"<br />
mkdir -p $ocpath/data<br />
mkdir -p $ocpath/assets<br />
<br />
printf "chmod Files and Directories\n"<br />
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640<br />
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750<br />
<br />
printf "chown Directories\n"<br />
chown -R ${rootuser}:${htgroup} ${ocpath}/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/apps/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/assets/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/config/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/data/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/themes/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/updater/<br />
<br />
chmod +x ${ocpath}/occ<br />
<br />
printf "chmod/chown .htaccess\n"<br />
if [ -f ${ocpath}/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess<br />
fi<br />
if [ -f ${ocpath}/data/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/data/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess<br />
fi<br />
</nowiki>}}<br />
<br />
If you have customized your Nextcloud installation and your filepaths are different than the standard installation, then modify this script accordingly.<br />
<br />
== Synchronization ==<br />
<br />
=== Desktop ===<br />
<br />
The official client can be installed with the {{Pkg|owncloud-client}} or {{Pkg|nextcloud-client}} package.<br />
Alternative versions are available in the [[AUR]]: {{AUR|owncloud-client-git}}. All of them use {{Pkg|qtkeychain}} to store and retrieve account-specific access tokens. To achieve auto-login when the client starts, one of optional dependencies of ''qtkeychain'' should be installed as well. Moreover, if you choose {{Pkg|libsecret}} as the backend for ''qtkeychain'', a service that provides [https://www.archlinux.org/packages/?q=org.freedesktop.secrets org.freedesktop.secrets] should be running when the client starts.<br />
<br />
==== Calendar ====<br />
<br />
To access your Nextcloud calendars using Mozilla [[Thunderbird]]'s Lightning calendar you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME</nowiki><br />
<br />
To access your Nextcloud calendars using CalDAV-compatible programs like Kontact or [[Evolution]], you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav</nowiki><br />
<br />
For details see the [https://docs.nextcloud.com/server/latest/user_manual/pim/index.html official documentation].<br />
<br />
==== Contacts ====<br />
<br />
To sync contacts with [[Thunderbird]], see [https://docs.nextcloud.com/server/latest/user_manual/pim/sync_thunderbird.html these instructions] from the official doc.<br />
<br />
==== Mounting files with davfs2 ====<br />
<br />
If you want to mount your Nextcloud using WebDAV, install {{Pkg|davfs2}} (as described in [[davfs2]]).<br />
<br />
To mount your Nextcloud, use:<br />
<br />
# mount -t davfs https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount<br />
<br />
You can also create an entry for this in {{ic|/etc/fstab}}<br />
<br />
{{hc|/etc/fstab|<br />
https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount davfs rw,user,noauto 0 0<br />
}}<br />
<br />
{{Tip|In order to allow automount you can also store your username (and password if you like) in a file as described in [[davfs2#Storing credentials]].}}<br />
<br />
{{Note|If creating/copying files is not possible, while the same operations work on directories, see [[davfs2#Creating/copying files not possible and/or freezes]].}}<br />
<br />
=== Mounting files in GNOME Files (Nautilus) ===<br />
<br />
You can access the files directly in Nautilus ('+ Other Locations') through WebDAV protocol - use the link as shown in your Nextcloud installation Web GUI (typically: https://example.org/remote.php/webdav/) but replace the protocol name from 'https' to 'davs'. Nautilus will ask for user name and password when trying to connect.<br />
<br />
=== Android ===<br />
<br />
Download the official Nextcloud app from [https://play.google.com/store/apps/details?id=com.nextcloud.client Google Play] or [https://f-droid.org/packages/com.nextcloud.client/ F-Droid].<br />
<br />
To enable contacts and calendar sync (Android 4+):<br />
# download [https://www.davx5.com/ DAVx<sup>5</sup>] ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play Store], [https://f-droid.org/app/at.bitfire.davdroid F-Droid])<br />
# Enable mod_rewrite.so in httpd.conf<br />
# create a new DAVdroid account in the ''Account'' settings, and specify your "short" server address and login/password couple, e.g. {{ic|<nowiki>https://cloud.example.com</nowiki>}} (there is no need for the {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} part if you configured your web server with the proper redirections, as illustrated previously in the article; ''DAVdroid'' will find itself the right URLs)<br />
<br />
=== iOS ===<br />
<br />
Download the official Nextcloud app from the [https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Running NextCloud in a subdirectory ===<br />
<br />
By including the default {{ic|nextcloud.conf}} in {{ic|httpd.conf}}, nextCloud will take control of port 80 and your localhost domain. <br />
<br />
If you would like to have nextCloud run in a subdirectory, then <br />
<br />
For apache, edit the {{ic|/etc/httpd/conf/extra/nextcloud.conf}} you included and comment out the {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} part of the include file.<br />
<br />
For nginx, you can use the following config when using nextcloud with uwsgi:<br />
<br />
{{hc|head=/etc/nginx/conf.d/nextcloud.conf|output=<nowiki><br />
location = /.well-known/carddav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location = /.well-known/caldav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location /.well-known/acme-challenge { }<br />
<br />
location ^~ /nextcloud {<br />
<br />
root /usr/share/webapps;<br />
<br />
# set max upload size<br />
client_max_body_size 512M;<br />
fastcgi_buffers 64 4K;<br />
<br />
# Disable gzip to avoid the removal of the ETag header<br />
gzip off;<br />
<br />
# Uncomment if your server is build with the ngx_pagespeed module<br />
# This module is currently not supported.<br />
#pagespeed off;<br />
<br />
location /nextcloud {<br />
rewrite ^ /nextcloud/index.php$uri;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:updater|ocs-provider)(?:$|/) {<br />
try_files $uri/ =404;<br />
index index.php;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
}<br />
<br />
# Adding the cache control header for js and css files<br />
# Make sure it is BELOW the PHP block<br />
location ~* \.(?:css|js) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
add_header Cache-Control "public, max-age=7200";<br />
# Add headers to serve security related headers (It is intended<br />
# to have those duplicated to the ones above)<br />
# Before enabling Strict-Transport-Security headers please read<br />
# into this topic first.<br />
# add_header Strict-Transport-Security "max-age=15768000;<br />
# includeSubDomains; preload;";<br />
add_header X-Content-Type-Options nosniff;<br />
add_header X-Frame-Options "SAMEORIGIN";<br />
add_header X-XSS-Protection "1; mode=block";<br />
add_header X-Robots-Tag none;<br />
add_header X-Download-Options noopen;<br />
add_header X-Permitted-Cross-Domain-Policies none;<br />
# Optional: Do not log access to assets<br />
access_log off;<br />
}<br />
<br />
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
# Optional: Do not log access to other assets<br />
access_log off;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
{{Note| Do not forget to configure the {{ic |.well-known}} URLs for service discovery. For more information please see [https://docs.nextcloud.com/server/18/admin_manual/issues/general_troubleshooting.html#service-discovery General troubleshooting and service discovery section of Nextcloud documentation]. }}<br />
<br />
=== Docker ===<br />
<br />
See the [https://hub.docker.com/_/owncloud/ ownCloud] or [https://github.com/nextcloud/docker Nextcloud] repository for [[Docker]].<br />
<br />
=== Upload and share from File Manager ===<br />
<br />
[https://github.com/schiesbn/shareLinkCreator shareLinkCreator] provides the ability to upload a file to<br />
OwnCloud via a supported file manager and receive a link to the uploaded file which can then be emailed or shared in another way.<br />
<br />
=== Defining Background Jobs ===<br />
<br />
Nextcloud requires scheduled execution of some tasks, and by default it achieves this by using AJAX,<br />
however AJAX is the least reliable method, and it is recommended to use [[Cron]] instead. However,<br />
ArchLinux ships with {{Pkg|systemd}}, so the preferred way of executing scheduled tasks is a [[Systemd#Timers|systemd timer]]. <br />
<br />
==== Manual install ====<br />
<br />
First create a service:<br />
<br />
{{hc|/etc/systemd/system/nextcloudcron.service|<nowiki><br />
[Unit]<br />
Description=Nextcloud cron.php job<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/php -f /usr/share/webapps/nextcloud/cron.php<br />
<br />
[Install]<br />
WantedBy=basic.target<br />
</nowiki>}}<br />
<br />
Then create a timer for that service:<br />
<br />
{{hc|/etc/systemd/system/nextcloudcron.timer|<nowiki><br />
[Unit]<br />
Description=Run Nextcloud cron.php every 15 minutes<br />
<br />
[Timer]<br />
OnBootSec=5min<br />
OnUnitActiveSec=15min<br />
Unit=nextcloudcron.service<br />
<br />
[Install]<br />
WantedBy=timers.target<br />
</nowiki>}}<br />
<br />
==== Activate timer ====<br />
<br />
[[Start/enable]] {{ic|nextcloudcron.timer}}.<br />
<br />
Confirm that it is running by running<br />
<br />
# systemctl list-timers<br />
<br />
==== AUR package ====<br />
<br />
Install {{AUR|nextcloud-systemd-timers}}.<br />
<br />
Provided services can be checked with:<br />
$ pacman -Ql nextcloud-systemd-timers<br />
<br />
For instance, to run the <code>cron.php</code> script every 15 minutes:<br />
# systemctl start nextcloud-cron.timer<br />
# systemctl enable nextcloud-cron.timer<br />
<br />
=== Collabora Online Office integration ===<br />
<br />
{{Expansion|What is the correct {{ic|domain}} (or {{ic|server_name}} in the config) when [[#Running NextCloud in a subdirectory|Nextcloud runs in a subdirectory]]?}}<br />
<br />
==== Solution with Docker ====<br />
<br />
The first, install a {{Pkg|docker}} package to provide collabora files and setup a Collabora server.<br />
<br />
[[Start/enable]] {{ic|docker.service}}.<br />
<br />
Then, download the official Docker image:<br />
<br />
# docker pull collabora/code<br />
<br />
And, installing a Collabora server. Make sure {{ic|cloud//.example//.com}} is your nextcloud's domain, not a collabora :<br />
<br />
# docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.example\\.com' --restart always --cap-add MKNOD collabora/code<br />
<br />
Also make sure to escape all dots with double backslashes (\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you will need to use 'domain=cloud\\.example\\.com\|second\\.example\\.com' instead. (All hosts are separated by \|.) When using `localhost` as domain for testing you need to add {{ic|--net host}} to ensure the docker container can access your Nextcloud server. <br />
<br />
If you need to delete or reinstall Collabora server use:<br />
<br />
For recognition CONTAINER_ID of server<br />
<br />
# docker ps<br />
<br />
Stop and delete<br />
<br />
# docker stop CONTAINER_ID<br />
# docker rm CONTAINER_ID<br />
<br />
Futher, follow the instruction of webserver you are using:<br />
<br />
'''Nginx setup example:'''<br />
<br />
Add following to your nextcloud domain config or add new config file in /etc/nginx/conf.d/ directory, (Do not forget to change {{ic|office.example.com}} and {{ic|ssl_certificate}} to the right values. If you are using docker image, change {{ic|http}} to {{ic|https}}.)<br />
<br />
{{hc|/etc/nginx/conf.d/example.conf|<nowiki><br />
upstream office.example.com {<br />
server 127.0.0.1:9980;<br />
}<br />
<br />
server {<br />
listen 443 ssl;<br />
server_name office.example.com;<br />
<br />
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;<br />
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;<br />
<br />
# static files<br />
location ^~ /loleaflet {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# WOPI discovery URL<br />
location ^~ /hosting/discovery {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# Main websocket<br />
location ~ /lool/(.*)/ws$ {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# Admin Console websocket<br />
location ^~ /lool/adminws {<br />
proxy_buffering off;<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# download, presentation and image upload<br />
location ~ /lool {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
Restart a nginx:<br />
<br />
# nginx -s reload<br />
<br />
or [[restart]] {{ic|nginx.service}}.<br />
<br />
'''Apache setup example:'''<br />
<br />
Add following to nextcloud config file. Do not forget to change to the right values<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|<nowiki><br />
<VirtualHost *:443><br />
ServerName office.nextcloud.com:443<br />
<br />
# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!<br />
SSLEngine on<br />
SSLCertificateFile /path/to/signed_certificate<br />
SSLCertificateChainFile /path/to/intermediate_certificate<br />
SSLCertificateKeyFile /path/to/private/key<br />
SSLProtocol all -SSLv2 -SSLv3<br />
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS<br />
SSLHonorCipherOrder on<br />
<br />
# Encoded slashes need to be allowed<br />
AllowEncodedSlashes NoDecode<br />
<br />
# Container uses a unique non-signed certificate<br />
SSLProxyEngine On<br />
SSLProxyVerify None<br />
SSLProxyCheckPeerCN Off<br />
SSLProxyCheckPeerName Off<br />
<br />
# keep the host<br />
ProxyPreserveHost On<br />
<br />
# static html, js, images, etc. served from loolwsd<br />
# loleaflet is the client part of LibreOffice Online<br />
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0<br />
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet<br />
<br />
# WOPI discovery URL<br />
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0<br />
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery<br />
<br />
# Main websocket<br />
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon<br />
<br />
# Admin Console websocket<br />
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws<br />
<br />
# Download as, Fullscreen presentation and Image upload operations<br />
ProxyPass /lool https://127.0.0.1:9980/lool<br />
ProxyPassReverse /lool https://127.0.0.1:9980/lool<br />
</VirtualHost><br />
</nowiki>}}<br />
<br />
After configuring these do restart your apache by [[restart]]ing {{ic|httpd.service}}.<br />
<br />
'''Install the Nextcloud app'''<br />
<br />
Go to the Apps section and choose “Office & Text”, install the “Collabora Online” app. In admin panel select Collabora Online tab and specific the server's domain you have setup before.<br />
<br />
==== Solution without Docker ====<br />
<br />
The {{AUR|collabora-online-server-nodocker}} package provides the Collabora Office (the desktop suite) and the “CODE” (Collabora Online Development Edition) server, which is based on “lool” (LibreOffice OnLine).<br />
<br />
Alter the {{ic|/etc/loolwsd/loolwsd.xml}} file, so that:<br />
<br />
* {{ic|config > server_name}} contains the host and port of the public Nextcloud address, separated by a colon (e.g. {{ic|example.org:443}}),<br />
* {{ic|config > ssl > enable}} is false (i.e. web browser —HTTPS→ proxy —HTTP→ loolwsd),<br />
* {{ic|config > ssl > termination}} is true (I suppose you’ll manage TLS at the proxy level),<br />
* {{ic|config > storage > wopi > host}} reflects the actual hostname (or pattern) of the proxy server (e.g. {{ic|(?:.*\.)?example\.org}}),<br />
* {{ic|config > admin_console > username}} and {{ic|config > admin_console > password}} are set to values of your choice.<br />
<br />
Then:<br />
<br />
{{Out of date|{{ic|/usr/share/doc/loolwsd/example.nginx.conf}} does not exist.}}<br />
<br />
* [[start]] and [[enable]] {{ic|loolwsd.service}};<br />
* configure Nginx as showed in {{ic|/usr/share/doc/loolwsd/example.nginx.conf}}, and restart it.<br />
<br />
== Troubleshooting ==<br />
{{Out of date|A lot of references to OwnCloud, are these still valid with Nextcloud?}}<br />
<br />
By default, the nextcloud.log is available in /usr/share/webapps/nextcloud/data.<br />
<br />
=== Environment variables not available ===<br />
<br />
Uncomment the line in {{ic|/etc/php/php-fpm.d/www.conf}} as per [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#php-fpm-tips-label Nextcloud documentation]:<br />
env[PATH] = /usr/local/bin:/usr/bin:/bin<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
ownCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if WebDAV is enabled.<br />
If you use SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]], and access ownCloud's admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]] tutorial, execute the following steps:<br />
<br />
Create a local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{ic|ca-certificates}}-updates from overwriting it.<br />
<br />
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
# update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
=== Self-signed certificate for Android devices ===<br />
<br />
Once you have followed the setup for SSL, as on [[Apache HTTP Server#TLS]] for example, early versions of DAVdroid will<br />
reject the connection because the certificate is not trusted. A certificate can be made as follows on your server:<br />
<br />
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt<br />
# openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt <br />
<br />
The file {{ic|android.txt}} should contain the following:<br />
<br />
basicConstraints=CA:true<br />
<br />
Then import {{ic|CA.der.crt}} to your Android device:<br />
<br />
Put the {{ic|CA.der.crt}} file onto the sdcard of your Android device (usually to the internal one, e.g. save from a mail attachment).<br />
It should be in the root directory. Go to ''Settings > Security > Credential storage'' and select ''Install from device storage''.<br />
The {{ic|.crt}} file will be detected and you will be prompted to enter a certificate name. After importing the certificate,<br />
you will find it in ''Settings > Security > Credential storage > Trusted credentials > User''.<br />
<br />
Thanks to: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]{{Dead link|2020|04|01|status=404}}<br />
<br />
Another way is to import the certificate directly from your server via [https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid]{{Dead link|2020|04|01|status=404}} and follow the instructions there.<br />
<br />
=== Cannot write into config directory! ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes {{ic|/etc/webapps}}.<br />
<br />
Restart the web server to apply the change.<br />
<br />
If you are getting this error after an upgrade from Nextcloud 17 to Nextcloud 18, also see [[#Explicitly permit Nextcloud directories for php-fpm]].<br />
<br />
=== Cannot create data directory ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes the data directory.<br />
<br />
Restart the web server to apply the change.<br />
<br />
=== CSync failed to find a specific file. ===<br />
<br />
This is most likely a certificate issue. Recreate it, and do not leave the common name empty or you will see the error again.<br />
<br />
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed. To fix that, you can use the occ command as described<br />
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html here]. So with<br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:list<br />
<br />
you can list all apps (if you installed nextcloud in the standard directory), and with <br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:disable <nameOfExtension><br />
<br />
you can disable the troubling app.<br />
<br />
Alternatively, you can either use [[phpMyAdmin]] to edit the {{ic|oc_appconfig}} table (if you got lucky and the table has an edit option), or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes';<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic authentication, make sure to exclude "status.php", which must be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== GUI tray icon disappears, but client still running in the background ===<br />
<br />
After waking up from a suspended state, the Nextcloud client tray icon may disappear from the system tray. A workaround is to delay the startup of the client, as noted [https://github.com/nextcloud/desktop/issues/203#issuecomment-463957811 here]. This can be done with the .desktop file, for example:<br />
<br />
{{hc|.local/share/applications/nextcloud.desktop|<nowiki><br />
...<br />
Exec=bash -c 'sleep 5 && nextcloud'<br />
...<br />
</nowiki>}}<br />
<br />
=== Some files upload, but give an error 'Integrity constraint violation...' ===<br />
<br />
You may see the following error in the ownCloud sync client:<br />
<br />
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...<br />
<br />
This is caused by an issue with the File Locking app, which is often not sufficient to keep conflicts from occurring on some webserver configurations.<br />
A more complete [https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking]<br />
is available that rids these errors, but you must be using the Redis php-caching method. Install {{Pkg|redis}} and {{Pkg|php-redis}}, comment out<br />
your current php-cache mechanism, and then in {{ic|/etc/php/conf.d/redis.ini}} uncomment {{ic|1=extension=redis}}.<br />
Then in {{ic|config.php}} make the following changes:<br />
<br />
'memcache.local' => '\OC\Memcache\Redis',<br />
'filelocking.enabled' => 'true',<br />
'memcache.locking' => '\OC\Memcache\Redis',<br />
'redis' => array(<br />
'host' => 'localhost',<br />
'port' => 6379,<br />
'timeout' => 0.0,<br />
),<br />
<br />
and [[start/enable]] {{ic|redis.service}}.<br />
<br />
Finally, disable the File Locking App, as the Transational File Locking will take care of it (and would conflict).<br />
<br />
If everything is working, you should see 'Transactional File Locking Enabled' under Server Status on the Admin page, and syncs should no longer cause issues.<br />
<br />
=== "Cannot write into apps directory" ===<br />
<br />
As mentioned in the [https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html official admin manual],<br />
either you need an apps directory that is writable by the http user, or you need to set {{ic|appstoreenabled}} to {{ic|false}}. <br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), it may be necessary to add your ''/path/to/data'' directory to the string on the line starting with {{ic|php_admin_value open_basedir }}:<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|2=<br />
<br />
php_admin_value open_basedir "''/path/to/data/'':/srv/http/:/dev/urandom:/tmp/:/usr/share/pear/:/usr/share/webapps/nextcloud/:/etc/webapps/nextcloud"<br />
}}<br />
<br />
=== Installed apps get blocked because of MIME type error ===<br />
<br />
If you are putting your apps folder outside of the nextcloud installation directory make sure your webserver serves it properly.<br />
<br />
In nginx this is accomplished by adding a location block to the nginx configuration as the folder will not be included in it by default.<br />
<br />
location ~ /apps2/(.*)$ {<br />
alias /var/www/nextcloud/apps/$1;<br />
}<br />
<br />
=== Security warnings even though the recommended settings have been included in nginx.conf ===<br />
<br />
At the top of the admin page there might be a warning to set the {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}},<br />
{{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}} and {{ic|X-Robots-Tag}} according to https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/harden_server.html{{Dead link|2020|04|01|status=404}}<br />
even though they are already set like that.<br />
<br />
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:<br />
<br />
{{hc|$ curl -I https://domain.tld|<nowiki><br />
...<br />
X-XSS-Protection: 1; mode=block<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: Sameorigin<br />
X-Robots-Tag: none<br />
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: SAMEORIGIN<br />
X-XSS-Protection: 1; mode=block<br />
X-Robots-Tag: none<br />
</nowiki>}}<br />
<br />
While the fast_cgi sample config has a parameter to avoid that ( {{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}} ), when using uwsgi and nginx the following modification of the uwsgi part in nginx.conf could help:<br />
<br />
{{hc| /etc/nginx/nginx.conf|<nowiki><br />
...<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_hide_header X-Frame-Options;<br />
#Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
#uwsgi_pass 127.0.0.1:3001;<br />
}<br />
...<br />
</nowiki>}}<br />
<br />
=== "Reading from keychain failed with error: 'No keychain service available'" ===<br />
<br />
Can be fixed for Gnome by installing the following 2 packages, {{Pkg|libgnome-keyring}} and {{Pkg|gnome-keyring}}.<br />
Or the following for KDE, {{Pkg|libgnome-keyring}} and {{Pkg|qtkeychain}}.<br />
<br />
=== FolderSync: "Method Not Allowed" ===<br />
<br />
FolderSync needs access to {{ic|/owncloud/remote.php/webdav}}, so you could create another alias for owncloud in your {{ic|/etc/httpd/conf/extra/nextcloud.conf}}<br />
<br />
<IfModule mod_alias.c><br />
Alias /nextcloud /usr/share/webapps/nextcloud/<br />
Alias /owncloud /usr/share/webapps/nextcloud/<br />
</IfModule><br />
<br />
== See also ==<br />
<br />
* [https://docs.nextcloud.com/ Nextcloud Documentation Overview]<br />
* [https://docs.nextcloud.com/server/latest/admin_manual/ Nextcloud Admin Manual]</div>Milkhttps://wiki.archlinux.org/index.php?title=Unofficial_user_repositories&diff=611429Unofficial user repositories2020-05-08T01:01:22Z<p>Milk: /* aur-av-bin */ repo is broken</p>
<hr />
<div>[[Category:Package management]]<br />
[[Category:Lists]]<br />
[[ja:非公式ユーザーリポジトリ]]<br />
[[zh-hans:Unofficial user repositories]]<br />
{{Related articles start}}<br />
{{Related|pacman-key}}<br />
{{Related|Official repositories}}<br />
{{Related articles end}}<br />
This article lists binary repositories freely created and shared by the community, often providing pre-built versions of PKGBUILDS found in the [[AUR]].<br />
<br />
In order to use these repositories, add them to {{ic|/etc/pacman.conf}}, as explained in [[pacman#Repositories and mirrors]]. If a repository is signed, you must obtain and locally sign the associated key, as explained in [[pacman/Package signing#Adding unofficial keys]].<br />
<br />
If you want to create your own custom repository, follow [[pacman/Tips and tricks#Custom local repository]].<br />
<br />
{{Warning|The official Arch Linux Developers and the Trusted Users do not perform tests of any sort to verify the contents of these repositories. You must decide whether to trust their maintainers and you take full responsibility for any consequences of using any unofficial repository.}}<br />
<br />
== Adding your repository to this page ==<br />
<br />
If you have your own repository, please add it to this page, so that all the other users will know where to find your packages. Please keep the following rules when adding new repositories:<br />
<br />
* Keep the lists in alphabetical order.<br />
* Include some information about the maintainer: include at least a (nick)name and some form of contact information (web site, email address, user page on ArchWiki or the forums, etc.).<br />
* If the repository is of the ''signed'' variety, please include a key-id, possibly using it as the anchor for a link to its keyserver; if the key is not on a keyserver, include a link to the key file.<br />
* Include some short description (e.g. the category of packages provided in the repository).<br />
* If there is a page (either on ArchWiki or external) containing more information about the repository, include a link to it.<br />
* If possible, avoid using comments in code blocks. The formatted description is much more readable. Users who want some comments in their {{ic|pacman.conf}} can easily create it on their own.<br />
<br />
Some repositories may also have packages for architectures beside x86_64. The {{ic|$arch}} variable will be set automatically by pacman.<br />
<br />
== Signed ==<br />
<br />
=== alerque ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/caleb Caleb Maclennan]<br />
* '''Description:''' Typesetting, publishing, and font development related tools such as SILE, CaSILE, fontship, and related dependencies including many fonts, Lua Rocks, and Python modules. Also mattermost, asterisk, and most of the [https://aur.archlinux.org/packages/?O=0&SeB=M&K=caleb&outdated=&SB=n&SO=a&PP=250&do_Search=Go AUR packages I (co-)maintain].<br />
* '''Git Repository:''' https://github.com/alerque/aur<br />
* '''Issue Tracker:''' https://github.com/alerque/aur/issues<br />
* '''Key-ID:''' [https://pgp.mit.edu/pks/lookup?op=get&search=0x63CC496475267693 63CC496475267693]<br />
<br />
{{bc|<nowiki><br />
[alerque]<br />
Server = https://arch.alerque.com/$arch<br />
</nowiki>}}<br />
<br />
=== andontie-aur ===<br />
<br />
* '''Maintainer:''' Holly M.<br />
* '''Description:''' A repo containing the most popular AUR packages, as well as some I use all the time. New packages can be requested on the upstream website.<br />
* '''Key-ID:''' EA50C866329648EE<br />
* '''Upstream page:''' https://aur.andontie.net<br />
<br />
{{bc|<nowiki><br />
[andontie-aur]<br />
Server = https://aur.andontie.net/$arch<br />
</nowiki>}}<br />
<br />
=== AniNIX ===<br />
* '''Maintainer:''' [http://foundation.aninix.net/DarkFeather DarkFeather]<br />
* '''Description:''' Self-written and AUR packages to support open-source cybersecurity research<br />
* ''''Key-ID:''' 904DE6275579CB589D85720C1CC1E3F4ED06F296<br />
* '''Upstream page:''' https://aninix.net<br />
* '''Git and issue tracking:''' https://foundation.aninix.net/<br />
* '''Contact:''' ircs://aninix.net:6697/#lobby<br />
<br />
{{bc|<nowiki><br />
[AniNIX]<br />
Server = https://maat.aninix.net/<br />
<br />
[aur]<br />
Server = https://maat.aninix.net/aur/<br />
</nowiki>}}<br />
<br />
=== arcanisrepo ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#arcanis arcanis]<br />
* '''Description:''' A repository with some AUR packages including packages from VCS<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[arcanisrepo]<br />
Server = https://repo.arcanis.me/repo/$arch<br />
</nowiki>}}<br />
<br />
(It is also available via FTP with the same URL.)<br />
<br />
=== arch4edu ===<br />
<br />
* '''Maintainers:''' [https://github.com/petronny Jingbei Li (petronny)], and [https://github.com/arch4edu/arch4edu/graphs/contributors others]<br />
* '''Description:''' arch4edu is a community repository for Archlinux and ArchlinuxARM that strives to provide the latest versions of most software used by college students.<br />
* '''Git Repo:''' https://github.com/arch4edu/arch4edu<br />
* '''Issue tracking:''' https://github.com/arch4edu/arch4edu/issues for packaging issues, out-of-date notifications, package requests, and related questions<br />
* '''Mirrors:''' https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux<br />
* '''Key-ID:''' 7931B6D628C8D3BA<br />
<br />
{{bc|<nowiki><br />
[arch4edu]<br />
Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch<br />
## or other mirrors in https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux<br />
</nowiki>}}<br />
<br />
=== archlinuxcn ===<br />
<br />
* '''Maintainers:''' [https://plus.google.com/+PhoenixNemo/ Phoenix Nemo (phoenixlzx)], [https://www.archlinux.org/people/developers/#fyan Felix Yan (felixonmars, dev)], [https://twitter.com/lilydjwg lilydjwg], [https://www.archlinux.org/people/trusted-users/#farseerfc farseerfc (TU)], and [https://github.com/archlinuxcn/repo/graphs/contributors others]<br />
* '''Description:''' Packages by the Chinese Arch Linux community, all signed. Be aware that i686 packages are not fully maintained and tested, create an issue if you find some problems.<br />
* '''Git Repo:''' https://github.com/archlinuxcn/repo<br />
* '''Issue tracking:''' https://github.com/archlinuxcn/repo/issues for packaging issues, out-of-date notifications, package requests, and related questions<br />
* '''Mirrors:''' https://github.com/archlinuxcn/mirrorlist-repo (Mostly for users in mainland China), or install ''archlinuxcn-mirrorlist-git'' from the repo.<br />
* '''Key-ID:''' Once the repo is added, ''archlinuxcn-keyring'' package must be installed before any other so you do not get errors about PGP signatures. ''archlinuxcn-keyring'' package itself is signed by TU.<br />
<br />
{{bc|<nowiki><br />
[archlinuxcn]<br />
Server = http://repo.archlinuxcn.org/$arch<br />
## or install archlinuxcn-mirrorlist-git and use the mirrorlist<br />
#Include = /etc/pacman.d/archlinuxcn-mirrorlist<br />
</nowiki>}}<br />
<br />
=== archstrike ===<br />
<br />
* '''Maintainer:''' [https://archstrike.org/team The ArchStrike Team]<br />
* '''Description:''' A repository for security professionals and enthusiasts<br />
* '''Upstream page:''' https://archstrike.org/<br />
* '''Key-ID:''' 9D5F1C051D146843CDA4858BDE64825E7CBC0D51<br />
<br />
{{Note|ArchStrike specific instructions can be found at https://archstrike.org/wiki/setup}}<br />
<br />
{{bc|<nowiki><br />
[archstrike]<br />
Server = https://mirror.archstrike.org/$arch/$repo<br />
</nowiki>}}<br />
<br />
=== archzfs ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/minextu Jan Houben (minextu)]<br />
* '''Description:''' Packages for ZFS on Arch Linux.<br />
* '''Upstream page:''' https://github.com/archzfs/archzfs<br />
* '''Key-ID:''' F75D9D76<br />
<br />
{{bc|<nowiki><br />
[archzfs]<br />
Server = http://archzfs.com/$repo/x86_64<br />
Server = http://mirror.sum7.eu/archlinux/archzfs/$repo/x86_64<br />
Server = https://mirror.biocrafting.net/archlinux/archzfs/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== archzfs-kernels ===<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/endre/ Endre Szabo]<br />
* '''Description:''' Official kernel packages matching the most recent [[# archzfs|ZFS packages]] kernel version dependencies. Use this to be able to upgrade your kernel package every time whilst using ZFS packages above :)<br />
* '''Upstream page:''' https://end.re/archzfs-kernels/<br />
* '''Key-ID:''' Not needed as packages are from core repos and signed officially.<br />
<br />
{{bc|<nowiki><br />
[archzfs-kernels]<br />
Server = http://end.re/$repo/<br />
</nowiki>}}<br />
<br />
=== ashleyis ===<br />
<br />
* '''Maintainer:''' Ashley Towns ([https://aur.archlinux.org/account/ashleyis/ ashleyis])<br />
* '''Description:''' Debug versions of SDL, chipmunk, libtmx and other misc game libraries. also swift-lang and some other AUR packages <br />
* '''Key-ID:''' B1A4D311<br />
<br />
{{bc|<nowiki><br />
[ashleyis]<br />
Server = http://arch.ashleytowns.id.au/repo/$arch<br />
</nowiki>}}<br />
<br />
=== blackeagle-pre-community ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#idevolder Ike Devolder]<br />
* '''Description:''' testing of the by me maintaned packages before moving to ''community'' repository<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[blackeagle-pre-community]<br />
Server = https://repo.herecura.be/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== chaotic-aur ===<br />
<br />
* '''Maintainer:''' [https://github.com/pedrohlc PedroHLC], and [https://github.com/librewish Librewish]<br />
* '''Description:''' Auto builds AUR packages the maintainer uses, update them hourly (a few are daily). Hosted in São Carlos, SP, Brazil. Has two mirrors (Germany and USA). x86_64 only. Has over 1600 packages.<br />
* '''Key-ID:''' [http://pool.sks-keyservers.net/pks/lookup?search=0x3056513887B78AEB&fingerprint=on&op=index], fingerprint {{ic|EF92 5EA6 0F33 D0CB 85C4 4AD1 3056 5138 87B7 8AEB }}<br />
* '''Note:''' See [https://lonewolf.pedrohlc.com/chaotic-aur maintainer's notes].<br />
{{bc|<nowiki><br />
[chaotic-aur]<br />
Server = http://lonewolf-builder.duckdns.org/$repo/x86_64<br />
Server = http://chaotic.bangl.de/$repo/x86_64<br />
Server = https://repo.kitsuna.net/x86_64<br />
</nowiki>}}<br />
<br />
=== catalyst ===<br />
<br />
* '''Maintainer:''' [[User:Vi0L0|Vi0l0]]<br />
* '''Description:''' ATI Catalyst proprietary drivers.<br />
* '''Key-ID:''' 653C3094<br />
<br />
{{bc|<nowiki><br />
[catalyst]<br />
Server = http://167.86.114.169/arch/catalyst/$arch<br />
</nowiki>}}<br />
<br />
=== catalyst-hd234k ===<br />
<br />
* '''Maintainer:''' [[User:Vi0L0|Vi0l0]]<br />
* '''Description:''' ATI Catalyst proprietary drivers.<br />
* '''Key-ID:''' 653C3094<br />
<br />
{{bc|<nowiki><br />
[catalyst-hd234k]<br />
Server = http://167.86.114.169/arch/catalyst-hd234k/$arch<br />
</nowiki>}}<br />
<br />
=== city ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#bgyorgy Balló György]<br />
* '''Description:''' Experimental/unpopular packages.<br />
* '''Upstream page:''' https://pkgbuild.com/~bgyorgy/city.html<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[city]<br />
Server = https://pkgbuild.com/~bgyorgy/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
=== coderkun-aur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/coderkun/ coderkun]<br />
* '''Description:''' AUR packages with random software. Supporting package deltas and package and database signing.<br />
* '''Upstream page:''' https://www.suruatoel.xyz/arch<br />
* '''Key-ID:''' 39E27199A6BEE374<br />
* '''Keyfile:''' [https://www.suruatoel.xyz/coderkun.asc https://www.suruatoel.xyz/coderkun.key]<br />
<br />
{{bc|<nowiki><br />
[coderkun-aur]<br />
Server = https://arch.suruatoel.xyz/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== coderkun-aur-audio ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/coderkun/ coderkun]<br />
* '''Description:''' AUR packages with audio-related (realtime kernels, lv2-plugins, …) software. Supporting package deltas and package and database signing.<br />
* '''Upstream page:''' https://www.suruatoel.xyz/arch<br />
* '''Key-ID:''' 39E27199A6BEE374<br />
* '''Keyfile:''' [https://www.suruatoel.xyz/coderkun.key https://www.suruatoel.xyz/coderkun.key]<br />
<br />
{{bc|<nowiki><br />
[coderkun-aur-audio]<br />
Server = https://arch.suruatoel.xyz/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== devkitpro ===<br />
<br />
* '''Maintainer:''' [https://devkitpro.org/ wintermute]<br />
* '''Description:''' Provides Homebrew toolchains for the Nintendo Wii, Gamecube, DS, GBA, Gamepark gp32 and Nintendo Switch<br />
* '''Upstream page:''' https://devkitpro.org/wiki/devkitPro_pacman<br />
* '''Key-ID:''' F7FD5492264BB9D0<br />
<br />
{{Note|Repository has its own additional keyring at https://downloads.devkitpro.org/devkitpro-keyring-r1.787e015-2-any.pkg.tar.xz.}}<br />
<br />
{{bc|<nowiki><br />
[dkp-libs]<br />
Server = https://downloads.devkitpro.org/packages<br />
[dkp-linux]<br />
Server = https://downloads.devkitpro.org/packages/linux<br />
</nowiki>}}<br />
<br />
=== disastrousaur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/TheGoliath TheGoliath]<br />
* '''Description:''' Well known AUR package managers, many of the most popular packages available on the AUR, as well as those that I favor myself<br />
* '''Upstream page:''' https://mirror.repohost.de/disastrousaur<br />
* '''Key-ID:''' CBAE582A876533FD<br />
* '''Keyfile:''' [https://mirror.repohost.de/disastrousaur.key https://mirror.repohost.de/disastrousaur.key]<br />
{{Warning|disastrousaur and disastrousarm have now been merged under the disastrousaur name Please make sure you have changed the Server URL for your repos accordingly. Builds for other architectures may come out as I got enough time getting things running. }}<br />
{{bc|<nowiki><br />
[disastrousaur]<br />
Server = https://mirror.repohost.de/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== dvzrv ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#dvzrv David Runge]<br />
* '''Description:''' [[Realtime kernel patchset]] (aka. {{AUR|linux-rt}} and {{AUR|linux-rt-lts}})<br />
* '''Key-ID:''' Not needed, as maintainer is a developer/TU<br />
<br />
{{bc|<nowiki><br />
[dvzrv]<br />
Server = https://pkgbuild.com/~dvzrv/repo/$arch<br />
</nowiki>}}<br />
<br />
=== ear ===<br />
<br />
* '''Maintainer:''' [https://wardsegers.be Ward Segers], <br />
* '''Description:''' Editicalu's ArchLinux Repository. Contains precompiled AUR packages (mostly the ones maintained by editicalu)<br />
* '''Homepage:''' https://ear.wardsegers.be/<br />
* '''Upstream page:''' https://gitlab.com/editicalu/ear<br />
* '''Keyfile:''' https://ear.wardsegers.be/signingkey.asc<br />
* '''Key-ID:''' A9C4E7734638ACF8<br />
<br />
{{Note|Instructions can be found at https://ear.wardsegers.be}}<br />
<br />
{{bc|<nowiki><br />
[ear]<br />
Server = https://ear.wardsegers.be/$arch<br />
</nowiki>}}<br />
<br />
=== eatabrick ===<br />
<br />
* '''Maintainer:''' bentglasstube<br />
* '''Description:''' Packages for software written by (and a few just compiled by) bentglasstube.<br />
<br />
{{bc|<nowiki><br />
[eatabrick]<br />
Server = http://repo.eatabrick.org/$arch<br />
</nowiki>}}<br />
<br />
=== eschwartz ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#eschwartz Eli Schwartz]<br />
* '''Description:''' Personal repo with AUR packages and some core packages from git (including glibc and pacman). Contains debug packages.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[eschwartz]<br />
Server = https://pkgbuild.com/~eschwartz/repo/$arch<br />
</nowiki>}}<br />
<br />
=== ffy00 ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#FFY00 Filipe Laíns]<br />
* '''Description:''' Personal repo. Contains misc packages related to hardware, cross-compilation, the D language, etc.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[ffy00]<br />
Server = https://pkgbuild.com/~ffy00/repo<br />
</nowiki>}}<br />
<br />
=== fusion809 ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/fusion809|Brenton Horne]] (brentonhorne77 at gmail dot com).<br />
* '''Description:''' Provides a few AUR and other packages I like. Like CodeLite and bleeding-edge (latest release within 1 day of its release) GVim (GTK 2 interface).<br />
* '''Package list:''' http://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/x86_64/<br />
* '''Key-ID:''' 03264DDCD606DC98<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/x86_64/home_fusion809_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_fusion809_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/$arch<br />
</nowiki>}}<br />
<br />
=== grawlinson ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/grawlinson George Rawlinson]<br />
* '''Description:''' AUR packages maintained by the user as well as some experimental packages.<br />
* '''Package list:''' https://repo.nullpointer.io<br />
* '''Key-ID:''' 25EA6900D9EA5EBC<br />
* '''Keyfile:''' https://repo.nullpointer.io/grawlinson.key<br />
<br />
{{bc|<nowiki><br />
[grawlinson]<br />
Server = https://repo.nullpointer.io<br />
</nowiki>}}<br />
<br />
=== gryffyn ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/gryffyn gryffyn]<br />
* '''Description:''' Packages built for personal use (mainly cybersec-related) and AUR packages.<br />
* '''Package list:''' https://repo.evan.mp<br />
* '''Key-ID:''' [http://keys.gnupg.net/pks/lookup?op=vindex&fingerprint=on&search=0xE528F34B64DA8C9D E528F34B64DA8C9D]<br />
<br />
{{bc|<nowiki><br />
[gryffyn]<br />
Server = https://repo.evan.mp/$arch<br />
</nowiki>}}<br />
<br />
=== herecura ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#idevolder Ike Devolder]<br />
* '''Description:''' additional packages not found in the ''community'' repository<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[herecura]<br />
Server = https://repo.herecura.be/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== holo ===<br />
<br />
* '''Maintainer:''' Stefan Majewsky <holo-pacman@posteo.de> (please prefer to report issues at [https://github.com/majewsky/holo-pacman-repo/issues Github])<br />
* '''Description:''' Packages for [https://holocm.org Holo configuration management], including compatible plugins and tools.<br />
* '''Upstream page:''' https://github.com/majewsky/holo-pacman-repo<br />
* '''Package list:''' https://repo.holocm.org/archlinux/x86_64<br />
* '''Key-ID:''' 0xF7A9C9DC4631BD1A<br />
<br />
{{bc|<nowiki><br />
[holo]<br />
Server = https://repo.holocm.org/archlinux/x86_64<br />
</nowiki>}}<br />
<br />
=== ivasilev ===<br />
<br />
* '''Maintainer:''' [https://ivasilev.net Ianis G. Vasilev]<br />
* '''Description:''' A variety of packages, mostly my own software and AUR builds.<br />
* '''Upstream page:''' https://ivasilev.net/pacman<br />
* '''Key-ID:''' [https://pgp.mit.edu/pks/lookup?op=vindex&search=0xB77A3C8832838F1F80ADFD7E1D0507B417DAB671 17DAB671]<br />
<br />
{{bc|<nowiki><br />
[ivasilev]Include some short description (e.g. the category of packages provided in the repository).<br />
Server = https://ivasilev.net/pacman/$arch<br />
</nowiki>}}<br />
<br />
=== jlk ===<br />
<br />
* '''Maintainer:''' [[User:Lahwaacz|Jakub Klinkovský]]<br />
* '''Description:''' Various packages from the ABS and AUR. Modified packages are in the {{ic|modified}} group.<br />
* '''Upstream page:''' https://jlk.fjfi.cvut.cz/arch/repo/README.html<br />
* '''Key-ID:''' 932BA3FA0C86812A32D1F54DAB5964AEB9FEDDDC<br />
<br />
{{bc|<nowiki><br />
[jlk]<br />
Server = https://jlk.fjfi.cvut.cz/arch/repo<br />
</nowiki>}}<br />
<br />
=== linux-nitrous ===<br />
<br />
* '''Maintainer:''' [https://superboring.dev Simao Gomes Viana (superboringdev or xdevs23)]<br />
* '''Description:''' linux-nitrous is a repository with prebuilt packages of the [https://gitlab.com/xdevs23/linux-nitrous linux-nitrous kernel]<br />
* '''Git Repo:''' https://gitlab.com/xdevs23/linux-nitrous<br />
* '''Issue tracking:''' https://github.com/xdevs23/linux-nitrous/issues for packaging issues and questions<br />
* '''Key-ID:''' [https://pgp.mit.edu/pks/lookup?op=vindex&search=E9C2DECAC962CB3AF1376D44148A9E3C9C3E3BF0 9C3E3BF0] (pgp.mit.edu), [http://hkps.pool.sks-keyservers.net/pks/lookup?search=0xE9C2DECAC962CB3AF1376D44148A9E3C9C3E3BF0&op=get 9C3E3BF0] (hkps.pool.sks-keInclude some short description (e.g. the category of packages provided in the repository).yservers.net), [http://keys.gnupg.net/pks/lookup?search=0xE9C2DECAC962CB3AF1376D44148A9E3C9C3E3BF0&op=get 9C3E3BF0] (keys.gnupg.net)<br />
<br />
{{bc|<nowiki><br />
[linux-nitrous]<br />
Server = https://github.com/xdevs23/linux-nitrous/releases/latest/download/<br />
</nowiki>}}<br />
<br />
=== markzz ===<br />
<br />
* '''Maintainer:''' [[User:Markzz|Mark Weiman (markzz)]]<br />
* '''Description:''' Packages that markzz maintains or uses on the AUR; this includes Linux with the vfio patchset ({{AUR|linux-vfio}} and {{AUR|linux-vfio-lts}}), and packages for analysis of network data.<br />
* '''Key ID:''' DEBB9EE4<br />
<br />
{{Note|If you want to add the key by installing the ''markzz-keyring'' package, temporarily add {{ic|1=SigLevel = Never}} into the repository section.}}<br />
<br />
{{bc|<nowiki><br />
[markzz]<br />
Server = https://repo.markzz.com/arch/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== maximbaz ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#maximbaz Maxim Baz]<br />
* '''Description:''' Personal repo with AUR packages.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[maximbaz]<br />
Server = https://pkgbuild.com/~maximbaz/repo/<br />
</nowiki>}}<br />
<br />
=== me176c ===<br />
<br />
* '''Maintainer:''' [https://github.com/lambdadroid lambdadroid]<br />
* '''Description:''' Packages for [[ASUS MeMO Pad 7 (ME176C(X))]]<br />
* '''Key-ID:''' 2B1138A8BB59D786A3BF42AAD996DA70572407FB<br />
<br />
{{bc|<nowiki><br />
[me176c]<br />
Server = https://me176c.uber.space/archlinux<br />
</nowiki>}}<br />
<br />
=== miffe ===<br />
<br />
* '''Maintainer:''' [https://bbs.archlinux.org/profile.php?id=4059 miffe]<br />
* '''Description:''' AUR packages maintained by miffe, e.g. linux-mainline<br />
* '''Key ID:''' 313F5ABD<br />
<br />
{{bc|<nowiki><br />
[miffe]<br />
Server = https://arch.miffe.org/$arch/<br />
</nowiki>}}<br />
<br />
=== mikelpint ===<br />
<br />
* '''Maintainer:''' [[User:Mikelpint|Mikel Pintado (Mikelpint)]]<br />
* '''Description:''' Packages that mikelpint maintains in the AUR.<br />
* '''Key ID:''' 5CA78FC65B189E2B<br />
<br />
{{bc|<nowiki><br />
[mikelpint]<br />
Server = https://mikelpint.github.io/repository/archlinux/repo<br />
</nowiki>}}<br />
<br />
=== Minerva W Science ===<br />
<br />
* '''Maintainer:''' Minerva W<br />
* '''Description:''' [[OpenFOAM]] packages.<br />
* '''Key-ID:''' 3FF21B78117507DA<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/Minerva_W:/Science/Arch_Extra/x86_64/home_Minerva_W_Science_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_Minerva_W_Science_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/Minerva_W:/Science/Arch_Extra/$arch <br />
</nowiki>}}<br />
<br />
=== mobile ===<br />
<br />
* '''Maintainer:''' [https://keybase.io/farwayer farwayer]<br />
* '''Description:''' React Native and Android development<br />
* '''Upstream page:''' https://keybase.pub/farwayer/arch/mobile/<br />
* '''Key ID:''' 7943315502A936D7<br />
<br />
{{bc|<nowiki><br />
[mobile]<br />
Server = https://farwayer.keybase.pub/arch/$repo<br />
</nowiki>}}<br />
<br />
=== nah ===<br />
<br />
* '''Maintainer:''' [https://yeah.nah.nz phillid]<br />
* '''Description:''' Pre-built versions of the (slow-to-build) graph-tool python libraries, mingw-w64<br />
* '''Key ID:''' 7BF3D17D0884BF5B<br />
<br />
{{bc|<nowiki><br />
[nah]<br />
Server = https://repo.nah.nz/$repo<br />
</nowiki>}}<br />
<br />
=== nickcao ===<br />
<br />
* '''Maintainer:''' [https://nichi.co/ NickCao]<br />
* '''Description:''' Some (useful for some) packages from me, and some aur packages I personally use.<br />
* '''Key-ID:''' 09CC69622E8D4EE343B4E8954D0BA456DF028C15<br />
<br />
{{bc|<nowiki><br />
[nickcao]<br />
Server = https://repo.nichi.co/$arch<br />
</nowiki>}}<br />
<br />
=== origincode ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/OriginCode OriginCode]<br />
* '''Description:''' A few staging or testing packages from [[#archlinuxcn]], and some daily use packages.<br />
* '''Key-ID:''' 0A5BAD445D80C1CC & 62BF97502AE10D22<br />
<br />
{{bc|<nowiki><br />
[origincode]<br />
Server = https://repo.origincode.me/repo/$arch<br />
</nowiki>}}<br />
<br />
=== oscloud ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/bionade24 bionade24]<br />
* '''Description:''' ROS Melodic packages and needed dependencies from the AUR.<br />
* '''Key-ID:''' CB222E7EBC11D682AAC8B317A4A0D73114FDE6FC<br />
<br />
{{bc|<nowiki><br />
[oscloud]<br />
Server = http://repo.oscloud.info/<br />
</nowiki>}}<br />
<br />
=== pkgbuilder ===<br />
<br />
* '''Maintainer:''' [https://chriswarrick.com/ Chris Warrick]<br />
* '''Description:''' A repository for PKGBUILDer, a Python AUR helper.<br />
* '''Upstream page:''' https://github.com/Kwpolska/pkgbuilder<br />
* '''Key-ID:''' 5EAAEA16<br />
<br />
{{bc|<nowiki><br />
[pkgbuilder]<br />
Server = https://pkgbuilder-repo.chriswarrick.com/<br />
</nowiki>}}<br />
<br />
=== post-factum kernels ===<br />
<br />
* '''Maintainer''': [https://aur.archlinux.org/account/post-factum Oleksandr Natalenko aka post-factum]<br />
* '''Upstream page''': https://gitlab.com/post-factum/pf-kernel/wikis/README<br />
* '''Description''': [[Kernel#Major_patchsets|pf-kernel]] packages by its developer, post-factum<br />
* '''Key-ID:''': 95C357D2AF5DA89D<br />
* '''Keyfile''': https://download.opensuse.org/repositories/home:/post-factum:/kernels/Arch/x86_64/home_post-factum_kernels_Arch.key<br />
<br />
{{bc|<nowiki><br />
[home_post-factum_kernels_Arch]<br />
Server = https://download.opensuse.org/repositories/home:/post-factum:/kernels/Arch/$arch<br />
</nowiki>}}<br />
<br />
=== QOwnNotes ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/pbek Patrizio Bekerle] (pbek), QOwnNotes author<br />
* '''Description:''' QOwnNotes is a open source notepad and todo list manager with markdown support and [[ownCloud]] integration.<br />
* '''Key-ID:''' FFC43FC94539B8B0<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Arch_Extra/x86_64/home_pbek_QOwnNotes_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_pbek_QOwnNotes_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Arch_Extra/$arch<br />
</nowiki>}}<br />
<br />
=== qt-debug ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/The-Compiler The Compiler]<br />
* '''Description:''' Qt/PyQt builds with debug symbols<br />
* '''Upstream page:''' https://github.com/qutebrowser/qt-debug-pkgbuild<br />
* '''Key-ID:''' D6A1C70FE80A0C82<br />
<br />
{{bc|<nowiki><br />
[qt-debug]<br />
Server = https://qutebrowser.org/qt-debug/$arch<br />
</nowiki>}}<br />
<br />
=== quarry ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#anatolik anatolik]<br />
* '''Description:''' Arch binary repository for [http://rubygems.org/ Rubygems] packages. See [https://bbs.archlinux.org/viewtopic.php?id=182729 forum announcement] for more information.<br />
* '''Sources:''' https://github.com/anatol/quarry<br />
* '''Key-ID:''' Not needed, as maintainer is a developer<br />
<br />
{{bc|<nowiki><br />
[quarry]<br />
Server = https://pkgbuild.com/~anatolik/quarry/x86_64/<br />
</nowiki>}}<br />
<br />
=== repo-ck ===<br />
<br />
Kernel and modules with Brain Fuck Scheduler and all the goodies in the ck1 patch set.<br />
<br />
See [[/Repo-ck]].<br />
<br />
=== seblu ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#seblu Sébastien Luttringer]<br />
* '''Description:''' All seblu useful pre-built packages, some homemade (linux-seblu-meta, zfs-dkms, spotify, masterpdfeditor, etc).<br />
* '''Key-ID:''' Not required, as maintainer is a Developer<br />
<br />
{{bc|<nowiki><br />
[seblu]<br />
Server = https://al1.seblu.net/$repo/$arch<br />
Server = https://al2.seblu.net/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== seiichiro ===<br />
<br />
* '''Maintainer:''' [https://www.seiichiro0185.org Stefan Brand (seiichiro0185)]<br />
* '''Description:''' AUR-packages I use frequently<br />
* '''Key-ID:''' 805517CC<br />
<br />
{{bc|<nowiki><br />
[seiichiro]<br />
Server = https://www.seiichiro0185.org/repo/$arch<br />
</nowiki>}}<br />
<br />
=== selinux ===<br />
<br />
* '''Maintainer:''' [https://github.com/swordfeng swordfeng]<br />
* '''Description:''' Unofficial (personal) builds for [[SELinux]] packages. PKGBUILDs are taken from AUR instead of the upstream GitHub repo.<br />
* '''Upstream page:''' https://github.com/archlinuxhardened/selinux<br />
* '''Key-ID:''' 7691FA63FE91CAFDD42A4AF08323B00E97DF0E6D (subkey B988167F59A3AF8368D55D65A7862FD48B72D83B is specifically used for signing packages)<br />
* '''Keyfile:''' https://repo.taiho.moe/key.asc<br />
<br />
{{bc|<nowiki><br />
[selinux]<br />
Server = https://repo.taiho.moe/$repo<br />
</nowiki>}}<br />
<br />
=== sergej-repo ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#spupykin Sergej Pupykin]<br />
* '''Description:''' psi-plus, owncloud-git, ziproxy, android, MySQL, and other stuff. Some packages also available for armv7h.<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[sergej-repo]<br />
Server = http://repo.p5n.pp.ru/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
=== siosm-aur ===<br />
<br />
* '''Maintainer:''' [https://tim.siosm.fr/about/ Timothee Ravier]<br />
* '''Description:''' packages also available in the Arch User Repository, sometimes with minor fixes<br />
* '''Upstream page:''' https://tim.siosm.fr/repositories/<br />
* '''Key-ID:''' 78688F83<br />
<br />
{{bc|<nowiki><br />
[siosm-aur]<br />
Server = http://siosm.fr/repo/$repo/<br />
</nowiki>}}<br />
<br />
=== slowbro ===<br />
<br />
* '''Maintainer:''' Katelyn Schiesser (slowbro)<br />
* '''Description:''' binary packages for {{AUR|linux-vfio}}<br />
* '''Key-ID:''' [http://pool.sks-keyservers.net/pks/lookup?op=get&search=0xAB3139C285186206 85186206]<br />
<br />
{{bc|<nowiki><br />
[slowbro]<br />
Server = http://www.slowbro.org/arch/$arch/<br />
</nowiki>}}<br />
<br />
=== sublime-text ===<br />
<br />
* '''Maintainer:''' Sublime Text developer<br />
* '''Description:''' Sublime Text editor packages from developer's repository<br />
* '''Upstream page:''' https://www.sublimetext.com/docs/3/linux_repositories.html#pacman<br />
* '''Key-ID:''' 8A8F901A<br />
<br />
{{bc|<nowiki><br />
[sublime-text]<br />
Server = https://download.sublimetext.com/arch/stable/x86_64<br />
</nowiki>}}<br />
<br />
=== subtitlecomposer ===<br />
<br />
* '''Maintainer:''' Mladen Milinkovic (maxrd2)<br />
* '''Description:''' Subtitle Composer stable and nightly builds<br />
* '''Upstream page:''' https://github.com/maxrd2/subtitlecomposer<br />
* '''Key-ID:''' 4E8D5DBD<br />
<br />
{{bc|<nowiki><br />
[subtitlecomposer]<br />
Server = https://smoothware.net/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== trinity ===<br />
<br />
* '''Maintainer:''' Michael J. Manley <mmanley@ntge.net><br />
* '''Description:''' [[Trinity]] Desktop Environment<br />
* '''Key-ID:''' 5F710C1E<br />
<br />
{{bc|<nowiki><br />
[trinity]<br />
Server = https://repo.nasutek.com/arch/contrib/trinity/x86_64<br />
</nowiki>}}<br />
<br />
=== valveaur ===<br />
<br />
* '''Maintainer:''' John Schoenick <johns@valvesoftware.com> (https://valvesoftware.com)<br />
* '''Description:''' A repository by Valve Software Providing The Linux-fsync kernel and modules, including the futex-wait-multiple patchset for testing with Proton fsync & Mesa with the ACO compiler patchset. <br />
* '''Upstream page:''' https://steamcommunity.com/linux<br />
* '''Key-ID:''' 8DC2CE3A3D245E64<br />
<br />
{{bc|<nowiki><br />
[valveaur]<br />
Server = http://repo.steampowered.com/arch/valveaur<br />
</nowiki>}}<br />
<br />
=== xuanrui ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/xuanruiqi Xuanrui Qi (xuanruiqi)]<br />
* '''Description:''' xuanruiqi's own packages and frequently-used packages, mainly of interest to functional programmers.<br />
* '''Upstream Page:''' https://www.xuanruiqi.com/linux.html<br />
* '''Key-ID:''' 6E06FBC8<br />
<br />
{{bc|<nowiki><br />
[xuanrui]<br />
Server = https://arch.xuanruiqi.com/repo<br />
</nowiki>}}<br />
<br />
=== xyne-x86_64 ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#xyne Xyne]<br />
* '''Description:''' A repository for Xyne's own projects.<br />
* '''Upstream page:''' http://xyne.archlinux.ca/projects/<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[xyne-x86_64]<br />
# Server = https://xyne.archlinux.ca/repos/xyne # It returns error 404 or 406 (varying). Use the line below:<br />
Server = http://xyne.archlinux.ca/bin/repo.php?file=<br />
</nowiki>}}<br />
<br />
=== home-thaodan ===<br />
<br />
* '''Maintainer''': [https://aur.archlinux.org/account/Thaodan Thaodan]<br />
* '''Upstream page''': https://gitlab.com/Thaodan/linux-pf<br />
* '''Description''': [[Kernel#Major_patchsets|pf-kernel]] and other packages by pf-kernel fork developer, Thaodan<br />
* '''Gitlab Project''': https://gitlab.com/Thaodan/repo-home-thaodan-repo<br />
* '''Key-ID:''': BBFE2FD421597395E4FC8C8DF6C85FEE79D661A4<br />
<br />
{{bc|<nowiki><br />
[home-thaodan]<br />
Server = https://thaodan.de/public/archlinux/home-thaodan/$arch<br />
</nowiki>}}<br />
<br />
== Unsigned ==<br />
<br />
{{Note|Users will need to add the following to these entries: {{ic|1=SigLevel = PackageOptional}}}}<br />
<br />
=== alucryd ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Various packages Maxime Gauduin maintains (or not) in the AUR.<br />
<br />
{{bc|<nowiki><br />
[alucryd]<br />
Server = https://pkgbuild.com/~alucryd/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== alucryd-multilib ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Various packages needed to run Steam without its runtime environment.<br />
<br />
{{bc|<nowiki><br />
[alucryd-multilib]<br />
Server = https://pkgbuild.com/~alucryd/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== andrwe ===<br />
<br />
* '''Maintainer:''' Andrwe Lord Weber<br />
* '''Description:''' contains programs I'm using on many systems<br />
* '''Upstream page:''' http://andrwe.org/linux/repository<br />
<br />
{{bc|<nowiki><br />
[andrwe]<br />
Server = http://repo.andrwe.org/$arch<br />
</nowiki>}}<br />
<br />
=== archgeotux ===<br />
<br />
* '''Maintainer:''' Samuel Mesa<br />
* '''Description:''' Geospatial and geographic information system applications<br />
* '''Upstream page:''' https://archgeotux.sourceforge.io/<br />
<br />
{{bc|<nowiki><br />
[archgeotux]<br />
Server = https://downloads.sourceforge.net/project/archgeotux/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxfr ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:'''<br />
* '''Upstream page:''' http://afur.archlinux.fr<br />
<br />
{{bc|<nowiki><br />
[archlinuxfr]<br />
Server = http://repo.archlinux.fr/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxgr ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:''' many interesting packages provided by the Hellenic (Greek) Arch Linux community<br />
<br />
{{bc|<nowiki><br />
[archlinuxgr]<br />
Server = http://archlinuxgr.tiven.org/archlinux/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxgr-kde4 ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:''' KDE4 packages (plasmoids, themes etc) provided by the Hellenic (Greek) Arch Linux community<br />
<br />
{{bc|<nowiki><br />
[archlinuxgr-kde4]<br />
Server = http://archlinuxgr.tiven.org/archlinux-kde4/$arch<br />
</nowiki>}}<br />
<br />
=== aviallon ===<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/aviallon/ aviallon]<br />
* '''Description:''' Prebuilt packages from AUR, plus some of my personal packages. For now, only x86_64 is supported.<br />
* '''Upstream page:''' https://mirror.lesviallon.fr/<br />
<br />
{{bc|<nowiki><br />
[aviallon]<br />
Server = https://mirror.lesviallon.fr/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== dx37essentials ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/DragonX256 DragonX256]<br />
* '''Description:''' Personal repository. Contains packages from AUR, which I using every day.<br />
* '''Git repo:''' https://gitlab.com/DX37/dx37essentials<br />
* '''Upstream page:''' https://dx37.gitlab.io/dx37essentials<br />
<br />
{{bc|<nowiki><br />
[dx37essentials]<br />
Server = https://dx37.gitlab.io/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== heftig ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#heftig Jan Steffens]<br />
* '''Description:''' Includes pulseaudio-git, pavucontrol-git, and firefox-developer-edition<br />
* '''Upstream page:''' https://bbs.archlinux.org/viewtopic.php?id=117157<br />
<br />
{{bc|<nowiki><br />
[heftig]<br />
Server = https://pkgbuild.com/~heftig/repo/$arch<br />
</nowiki>}}<br />
<br />
=== jkanetwork ===<br />
<br />
* '''Maintainer:''' kprkpr <kevin01010 at gmail dot com><br />
* '''Maintainer:''' Joselucross <jlgarrido97 at gmail dot com><br />
* '''Description:''' Packages of AUR like pimagizer,stepmania,yaourt,linux-mainline,wps-office,grub-customizer,some IDE.. Open for all that wants to contribute<br />
* '''Upstream page:''' http://repo.jkanetwork.com/<br />
<br />
{{bc|<nowiki><br />
[jkanetwork]<br />
Server = http://repo.jkanetwork.com/repo/$repo/<br />
</nowiki>}}<br />
<br />
=== juju ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/Juju Juju]<br />
* '''Description:''' Emulators and development tools for some retro computers such as the Commander X16 and the TI-84+, along with some of my packages I maintain on the AUR<br />
* '''Upstream page:''' http://repo.juju2143.ca/<br />
<br />
{{bc|<nowiki><br />
[juju]<br />
Server = https://repo.juju2143.ca/archlinux/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
=== kodi-devel-prebuilt ===<br />
<br />
* '''Maintainer:''' asm0dey <pavel.finkelshtein+AUR@gmail.com><br />
* '''Description:''' Prebuilt packages of kodi-devel from AUR<br />
* '''Upstream page:''' {{AUR|kodi-devel}}<br />
<br />
{{bc|<nowiki><br />
[kodi-devel-prebuilt]<br />
Server = https://asm0dey.github.io/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== mesa-git ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#lcarlier Laurent Carlier]<br />
* '''Description:''' Mesa git builds for the ''testing'' and ''multilib-testing'' repositories<br />
<br />
{{bc|<nowiki><br />
[mesa-git]<br />
Server = https://pkgbuild.com/~lcarlier/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== oracle ===<br />
<br />
* '''Maintainer:''' [[User:Malvineous]]<br />
* '''Description:''' [[Oracle Database client]] and associated tools, built from AUR packages and hosted on AWS S3 using [https://github.com/Malvineous/archlinux-pacman-repo Makefile scripts].<br />
* '''Conditions:''' By using this repository you agree to the [http://www.oracle.com/technetwork/licenses/instant-client-lic-152016.html Oracle Technology Network Development and Distribution License Terms for Instant Client].<br />
{{bc|<nowiki><br />
[oracle]<br />
Server = http://linux.shikadi.net/arch/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== ownstuff ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/Martchus Martchus]<br />
* '''Description:''' A lot of packages from the AUR, e.g. a great number packages for mingw-w64 and Android cross compilation, fonts, Perl modules, tools like {{AUR|tageditor}}, {{AUR|syncthingtray}}, {{AUR|subtitlecomposer}} and {{AUR|qmplay2}}<br />
* '''Upstream page''': https://github.com/Martchus/PKGBUILDs (sources beside the AUR) and https://martchus.no-ip.biz/repoindex (package browser/search)<br />
<br />
{{bc|<nowiki><br />
[ownstuff-testing]<br />
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch<br />
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch<br />
<br />
[ownstuff]<br />
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch<br />
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
{{Note|The testing repository is supposed to be used together with the official testing repositories.}}<br />
<br />
=== pantheon ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Repository containing Pantheon-related packages<br />
<br />
{{bc|<nowiki><br />
[pantheon]<br />
Server = https://pkgbuild.com/~alucryd/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== pietma ===<br />
<br />
* '''Maintainer:''' MartiMcFly <martimcfly@autorisation.de><br />
* '''Description:''' Arch User Repository packages [https://aur.archlinux.org/packages/?K=martimcfly&SeB=m I create or maintain.].<br />
* '''Upstream page:''' http://pietma.com/tag/aur/<br />
<br />
{{bc|<nowiki><br />
[pietma]<br />
Server = http://repository.pietma.com/nexus/content/repositories/archlinux/$arch/$repo<br />
</nowiki>}}<br />
<br />
=== pnsft-pur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/ponsfoot ponsfoot]<br />
* '''Description:''' Japanese input method packages Mozc (vanilla) and libkkc<br />
<br />
{{bc|<nowiki><br />
[pnsft-pur]<br />
Server = https://osdn.net/projects/ponsfoot-aur/storage/pur/x86_64/<br />
</nowiki>}}<br />
<br />
=== rstudio ===<br />
<br />
* '''Maintainer:''' Artem Klevtsov <a.a.klevtsov@gmail.com><br />
* '''Description:''' RStudio IDE packages.<br />
* '''Upstream page:''' https://gitlab.com/aur1/rstudio<br />
<br />
{{bc|<nowiki><br />
[rstudio]<br />
Server = https://aur1.gitlab.io/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== stx4 ===<br />
<br />
* '''Maintainer:''' StarterX4 <starterx4[at]gmail.com><br />
* '''Description:''' Any – some fonts and fakepkgs; x86_64 – archived yet might useful packages (like PacmanXG4) and some AUR soft (like OpenBoard).<br />
* '''Upstream Page:''' https://keybase.pub/starterx4/repos/arch/<br />
<br />
{{bc|<nowiki><br />
[stx4-any]<br />
Server = https://starterx4.keybase.pub/repos/arch/any/stx4<br />
<br />
[stx4-x86_64]<br />
Server = https://starterx4.keybase.pub/repos/arch/x86_64/stx4<br />
</nowiki>}}<br />
<br />
=== titanium ===<br />
<br />
* '''Maintainer:''' Pyrerune <pyrerune@gmail.com><br />
* '''Description:''' Repository containing software I develop.<br />
{{bc|<nowiki><br />
[titanium]<br />
Server = https://pyrerune.github.io/titanium/$arch<br />
</nowiki>}}<br />
<br />
=== userrepository ===<br />
<br />
* '''Maintainer:''' [https://twitter.com/brunomiguel Bruno Miguel] <brunoalexandremiguel@gmail.com><br />
* '''Description:''' Repository containing software from AUR<br />
{{bc|<nowiki><br />
[userrepository]<br />
Server = https://userrepository.eu<br />
</nowiki>}}<br />
<br />
== Packages search ==<br />
<br />
{{Accuracy|{{ic|pkgs.org}} shows '''incorrect information''' - some unofficial repositories from this page or with non-x86_64 architectures are marked as official.}}<br />
<br />
Most of unofficial Arch Linux repositories are indexed on https://archlinux.pkgs.org/.<br />
<br />
It provides repositories browser and packages search.</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=611428Professional audio2020-05-08T01:01:01Z<p>Milk: /* See also */ remove old repo</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
<br />
# echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
# echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|2=<br />
vm.swappiness = 10<br />
}}<br />
<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|2=<br />
fs.inotify.max_user_watches = 600000<br />
}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
<br />
$ setpci -v -d *:* latency_timer='''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer='''ff'''<br />
<br />
E.g. {{ic|1=SOUND_CARD_PCI_ID=03:00.0}}.<br />
<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
<br />
{{hc|$ lspci {{!}} grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)<br />
}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
<br />
$ cat /proc/asound/card0/codec#0<br />
<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack]{{Dead link|2020|04|01|status=404}}, deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEMPT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that do not need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCMs to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
=== Tascam US-122 ===<br />
<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|2=<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"<br />
}}<br />
<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
$ grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/training-tutorials/build-serious-multimedia-production-workstation-arch-linux/ Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
On [https://freenode.net/ freenode]:<br />
* #archlinux-proaudio - Arch Linux pro-audio channel<br />
* #lau - General Linux Audio channel for users<br />
* #lad - General Linux Audio channel for developers<br />
* #jack - Development and support related to JACK audio system<br />
* #lv2 - Development and support related to the LV2 plugin format<br />
* #ardour - Discussion and support relating to the Ardour DAW<br />
* #opensourcemusicians - Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* AUR meta packages: {{AUR|proaudio-meta}}, {{AUR|soundfonts-aur-meta}}, {{AUR|lv2-plugins-aur-meta}}<br />
* User repositories: [[Unofficial_user_repositories#coderkun-aur-audio|coderkun-aur-audio]] and [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [http://archaudio.org ArchAudio]{{Dead link|2020|02|25}} - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=611427Professional audio2020-05-08T01:00:11Z<p>Milk: /* See also */ add meta pkg</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
<br />
# echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
# echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|2=<br />
vm.swappiness = 10<br />
}}<br />
<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|2=<br />
fs.inotify.max_user_watches = 600000<br />
}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
<br />
$ setpci -v -d *:* latency_timer='''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer='''ff'''<br />
<br />
E.g. {{ic|1=SOUND_CARD_PCI_ID=03:00.0}}.<br />
<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
<br />
{{hc|$ lspci {{!}} grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)<br />
}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
<br />
$ cat /proc/asound/card0/codec#0<br />
<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack]{{Dead link|2020|04|01|status=404}}, deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEMPT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that do not need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCMs to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
=== Tascam US-122 ===<br />
<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|2=<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"<br />
}}<br />
<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
$ grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/training-tutorials/build-serious-multimedia-production-workstation-arch-linux/ Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
On [https://freenode.net/ freenode]:<br />
* #archlinux-proaudio - Arch Linux pro-audio channel<br />
* #lau - General Linux Audio channel for users<br />
* #lad - General Linux Audio channel for developers<br />
* #jack - Development and support related to JACK audio system<br />
* #lv2 - Development and support related to the LV2 plugin format<br />
* #ardour - Discussion and support relating to the Ardour DAW<br />
* #opensourcemusicians - Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* AUR meta packages: {{AUR|proaudio-meta}}, {{AUR|soundfonts-aur-meta}}, {{AUR|lv2-plugins-aur-meta}}<br />
* User repositories: [[Unofficial_user_repositories#aur-av-bin|aur-av-bin]], [[Unofficial_user_repositories#coderkun-aur-audio|coderkun-aur-audio]] and [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [http://archaudio.org ArchAudio]{{Dead link|2020|02|25}} - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=595754Professional audio2020-01-21T00:01:35Z<p>Milk: /* IRC */ tidy last line also</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|<nowiki><br />
vm.swappiness = 10<br />
</nowiki>}}<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|<nowiki><br />
fs.inotify.max_user_watches = 600000<br />
</nowiki>}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
On [https://freenode.net/ freenode]:<br />
* #archlinux-proaudio - Arch Linux pro-audio channel<br />
* #lau - General Linux Audio channel for users<br />
* #lad - General Linux Audio channel for developers<br />
* #jack - Development and support related to JACK audio system<br />
* #lv2 - Development and support related to the LV2 plugin format<br />
* #ardour - Discussion and support relating to the Ardour DAW<br />
* #opensourcemusicians - Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* AUR meta packages: [https://aur.archlinux.org/packages/proaudio-meta proaudio-meta] and [https://aur.archlinux.org/packages/soundfonts-aur-meta soundfonts-aur-meta]<br />
* User repositories: [[Unofficial_user_repositories#aur-av-bin|aur-av-bin]], [[Unofficial_user_repositories#coderkun-aur-audio|coderkun-aur-audio]] and [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [http://archaudio.org ArchAudio] - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=595753Professional audio2020-01-21T00:01:21Z<p>Milk: /* IRC */ * tidy up and add #ardour</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|<nowiki><br />
vm.swappiness = 10<br />
</nowiki>}}<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|<nowiki><br />
fs.inotify.max_user_watches = 600000<br />
</nowiki>}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
On [https://freenode.net/ freenode]:<br />
* #archlinux-proaudio - Arch Linux pro-audio channel<br />
* #lau - General Linux Audio channel for users<br />
* #lad - General Linux Audio channel for developers<br />
* #jack - Development and support related to JACK audio system<br />
* #lv2 - Development and support related to the LV2 plugin format<br />
* #ardour - Discussion and support relating to the Ardour DAW<br />
* #opensourcemusicians on freenode.net: Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* AUR meta packages: [https://aur.archlinux.org/packages/proaudio-meta proaudio-meta] and [https://aur.archlinux.org/packages/soundfonts-aur-meta soundfonts-aur-meta]<br />
* User repositories: [[Unofficial_user_repositories#aur-av-bin|aur-av-bin]], [[Unofficial_user_repositories#coderkun-aur-audio|coderkun-aur-audio]] and [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [http://archaudio.org ArchAudio] - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=595752Professional audio2020-01-20T23:58:42Z<p>Milk: /* See also */ * AUR meta packages: [https://aur.archlinux.org/packages/proaudio-meta proaudio-meta] and [https://aur.archlinux.org/packages/soundfonts-aur-meta soundfonts-aur-meta]</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|<nowiki><br />
vm.swappiness = 10<br />
</nowiki>}}<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|<nowiki><br />
fs.inotify.max_user_watches = 600000<br />
</nowiki>}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
* #archlinux-proaudio on freenode.net: Arch Linux pro-audio channel<br />
* #lau on freenode.net: General Linux Audio channel for users<br />
* #lad on freenode.net: General Linux Audio channel for developers<br />
* #jack on freenode.net: Development and support related to JACK audio system<br />
* #lv2 on freenode.net: Development and support related to the LV2 plugin format<br />
* #opensourcemusicians on freenode.net: Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* AUR meta packages: [https://aur.archlinux.org/packages/proaudio-meta proaudio-meta] and [https://aur.archlinux.org/packages/soundfonts-aur-meta soundfonts-aur-meta]<br />
* User repositories: [[Unofficial_user_repositories#aur-av-bin|aur-av-bin]], [[Unofficial_user_repositories#coderkun-aur-audio|coderkun-aur-audio]] and [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [http://archaudio.org ArchAudio] - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=594160Professional audio2020-01-06T22:51:24Z<p>Milk: /* IRC */ add #jack and #lv2</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|<nowiki><br />
vm.swappiness = 10<br />
</nowiki>}}<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|<nowiki><br />
fs.inotify.max_user_watches = 600000<br />
</nowiki>}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
* #archlinux-proaudio on freenode.net: Arch Linux pro-audio channel<br />
* #lau on freenode.net: General Linux Audio channel for users<br />
* #lad on freenode.net: General Linux Audio channel for developers<br />
* #jack on freenode.net: Development and support related to JACK audio system<br />
* #lv2 on freenode.net: Development and support related to the LV2 plugin format<br />
* #opensourcemusicians on freenode.net: Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* User repositories: [[Unofficial_user_repositories#aur-av-bin|aur-av-bin]], [[Unofficial_user_repositories#coderkun-aur-audio|coderkun-aur-audio]] and [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [http://archaudio.org ArchAudio] - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=594159Professional audio2020-01-06T22:50:09Z<p>Milk: /* See also */ * User repositories: aur-av-bin, coderkun-aur-audio and heftig</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|Realtime kernel}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Arch Linux provides the package groups {{Grp|pro-audio}} (holding all relevant (semi-) professional applications), {{Grp|lv2-plugins}}, {{Grp|ladspa-plugins}}, {{Grp|dssi-plugins}} and {{Grp|vst-plugins}} (the latter being subgroups of the first group).<br />
<br />
{{Tip| See [[Pacman/Tips and tricks#Listing packages]] for listing members of and [[Pacman#Installing package groups]] for installing package groups.}}<br />
<br />
Low-latency audio on Linux is achieved using [[JACK]] (all applications in the {{Grp|pro-audio}} group are [[JACK]] clients).<br />
<br />
{{Note| [[JACK]] uses audio backends, such as [[ALSA]], [http://ffado.org FFADO], [[OSS]] or [http://www.portaudio.com/ Portaudio]. Depending on your setup, make sure those are configured properly!}}<br />
<br />
=== System configuration ===<br />
<br />
{{Note| The quality of information on best practices and system configuration vary a great deal (and are outdated or sometimes even contradictory in many locations). While for some systems and setups a higher level of optimization is necessary, for most users this will not be the case. Try a standard setup with the vanilla Arch Linux kernel first. Only if you require a setup with lower latency and greater stability, start considering optimizations!}}<br />
<br />
You may want to consider the following often seen system optimizations:<br />
<br />
* Setting the [[CPU frequency scaling]] governor to ''performance''.<br />
* [[Realtime_process_management#Configuring_PAM|Configuring pam_limits]] (e.g. by installing {{pkg|realtime-privileges}} and adding your user to the {{ic|realtime}} group).<br />
* Using the {{ic|threadirqs}} [[kernel parameter]] (consult [https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html] for reference) - enforced by default by the [[realtime kernel patchset]].<br />
* Using the [[realtime kernel patchset]].<br />
* Add {{ic|noatime}} to [[fstab]] (see [[Improving performance#Mount options]]).<br />
* Increasing the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
* Reducing ''swappiness'' (aka swap frequency, set to {{ic|60}} by default) to e.g. {{ic|10}} will make the system wait much longer before trying to swap to disk (see [[wikipedia:Paging#Swappiness]]). This can be done on the fly with {{ic|1=sysctl vm.swappiness=10}} (see {{man|8|sysctl}}) or setup permanently, using a configuration file (see {{man|5|sysctl.d}}) such as:<br />
{{hc|/etc/sysctl.d/90-swappiness.conf|<nowiki><br />
vm.swappiness = 10<br />
</nowiki>}}<br />
* Increasing the maximum watches on files (defaults to {{ic|524288}}) to e.g. {{ic|600000}}, that ''inotify'' keeps track of for your user, can help with applications, that require many file handles (such as [[List_of_applications#Digital_audio_workstations|DAWs]]). This again can be done on the fly with {{ic|1=sysctl fs.inotify.max_user_watches=600000}} or in a dedicated configuration file:<br />
{{hc|/etc/sysctl.d/90-max_user_watches.conf|<nowiki><br />
fs.inotify.max_user_watches = 600000<br />
</nowiki>}}<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[install]]ing the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
git clone git://github.com/raboof/realtimeconfigquickscan.git<br />
cd realtimeconfigquickscan<br />
perl ./realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of configuration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing lists ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
* #archlinux-proaudio on freenode.net: Arch Linux pro-audio channel<br />
* #lau on freenode.net: General Linux Audio channel for users<br />
* #lad on freenode.net: General Linux Audio channel for developers<br />
* #opensourcemusicians on freenode.net: Large general OSS musician discussion channel<br />
<br />
== See also ==<br />
* [[List of applications#Audio|Audio]] A comprehensive list of audio applications on Arch Linux<br />
* [[Realtime kernel]]<br />
* User repositories: [[Unofficial_user_repositories#aur-av-bin|aur-av-bin]], [[Unofficial_user_repositories#coderkun-aur-audio|coderkun-aur-audio]] and [[Unofficial_user_repositories#heftig|heftig]]<br />
* [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] A list of software and resources for professional audio/video/live events production on the Linux platform<br />
* [https://wiki.linuxfoundation.org/realtime/start Realtime] The Linux Foundation wiki on the PREEMPT_RT patches<br />
* [http://archaudio.org ArchAudio] - the now legacy - pro-audio related package repository overlay ([https://bbs.archlinux.org/viewtopic.php?id=30547 some history])</div>Milkhttps://wiki.archlinux.org/index.php?title=Unofficial_user_repositories&diff=594158Unofficial user repositories2020-01-06T22:49:20Z<p>Milk: /* aur-av-bin */ better description w/ keywords</p>
<hr />
<div>[[Category:Package management]]<br />
[[Category:Lists]]<br />
[[ja:非公式ユーザーリポジトリ]]<br />
[[zh-hans:Unofficial user repositories]]<br />
{{Related articles start}}<br />
{{Related|pacman-key}}<br />
{{Related|Official repositories}}<br />
{{Related articles end}}<br />
This article lists binary repositories freely created and shared by the community, often providing pre-built versions of PKGBUILDS found in the [[AUR]].<br />
<br />
In order to use these repositories, add them to {{ic|/etc/pacman.conf}}, as explained in [[pacman#Repositories and mirrors]]. If a repository is signed, you must obtain and locally sign the associated key, as explained in [[pacman/Package signing#Adding unofficial keys]].<br />
<br />
If you want to create your own custom repository, follow [[pacman/Tips and tricks#Custom local repository]].<br />
<br />
{{Warning|The official Arch Linux Developers and the Trusted Users do not perform tests of any sort to verify the contents of these repositories. You must decide whether to trust their maintainers and you take full responsibility for any consequences of using any unofficial repository.}}<br />
<br />
== Adding your repository to this page ==<br />
<br />
If you have your own repository, please add it to this page, so that all the other users will know where to find your packages. Please keep the following rules when adding new repositories:<br />
<br />
* Keep the lists in alphabetical order.<br />
* Include some information about the maintainer: include at least a (nick)name and some form of contact information (web site, email address, user page on ArchWiki or the forums, etc.).<br />
* If the repository is of the ''signed'' variety, please include a key-id, possibly using it as the anchor for a link to its keyserver; if the key is not on a keyserver, include a link to the key file.<br />
* Include some short description (e.g. the category of packages provided in the repository).<br />
* If there is a page (either on ArchWiki or external) containing more information about the repository, include a link to it.<br />
* If possible, avoid using comments in code blocks. The formatted description is much more readable. Users who want some comments in their {{ic|pacman.conf}} can easily create it on their own.<br />
<br />
Some repositories may also have packages for architectures beside x86_64. The {{ic|$arch}} variable will be set automatically by pacman.<br />
<br />
== Signed ==<br />
<br />
=== andontie-aur ===<br />
<br />
* '''Maintainer:''' Holly M.<br />
* '''Description:''' A repo containing the most popular AUR packages, as well as some I use all the time. New packages can be requested on the upstream website.<br />
* '''Key-ID:''' EA50C866329648EE<br />
* '''Upstream page:''' https://aur.andontie.net<br />
<br />
{{bc|<nowiki><br />
[andontie-aur]<br />
Server = https://aur.andontie.net/$arch<br />
</nowiki>}}<br />
<br />
=== arcanisrepo ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#arcanis arcanis]<br />
* '''Description:''' A repository with some AUR packages including packages from VCS<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[arcanisrepo]<br />
Server = https://repo.arcanis.me/repo/$arch<br />
</nowiki>}}<br />
<br />
(It is also available via FTP with the same URL.)<br />
<br />
=== arch4edu ===<br />
<br />
* '''Maintainers:''' [https://github.com/petronny Jingbei Li (petronny)], and [https://github.com/arch4edu/arch4edu/graphs/contributors others]<br />
* '''Description:''' arch4edu is a community repository for Archlinux and ArchlinuxARM that strives to provide the latest versions of most software used by college students.<br />
* '''Git Repo:''' https://github.com/arch4edu/arch4edu<br />
* '''Issue tracking:''' https://github.com/arch4edu/arch4edu/issues for packaging issues, out-of-date notifications, package requests, and related questions<br />
* '''Mirrors:''' https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux<br />
* '''Key-ID:''' 7931B6D628C8D3BA<br />
<br />
{{bc|<nowiki><br />
[arch4edu]<br />
Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch<br />
## or other mirrors in https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux<br />
</nowiki>}}<br />
<br />
=== archlinuxcn ===<br />
<br />
* '''Maintainers:''' [https://plus.google.com/+PhoenixNemo/ Phoenix Nemo (phoenixlzx)], [https://www.archlinux.org/people/developers/#fyan Felix Yan (felixonmars, dev)], [https://twitter.com/lilydjwg lilydjwg], [https://www.archlinux.org/people/trusted-users/#farseerfc farseerfc (TU)], and [https://github.com/archlinuxcn/repo/graphs/contributors others]<br />
* '''Description:''' Packages by the Chinese Arch Linux community, all signed. Be aware that i686 packages are not fully maintained and tested, create an issue if you find some problems.<br />
* '''Git Repo:''' https://github.com/archlinuxcn/repo<br />
* '''Issue tracking:''' https://github.com/archlinuxcn/repo/issues for packaging issues, out-of-date notifications, package requests, and related questions<br />
* '''Mirrors:''' https://github.com/archlinuxcn/mirrorlist-repo (Mostly for users in mainland China), or install ''archlinuxcn-mirrorlist-git'' from the repo.<br />
* '''Key-ID:''' Once the repo is added, ''archlinuxcn-keyring'' package must be installed before any other so you do not get errors about PGP signatures. ''archlinuxcn-keyring'' package itself is signed by TU.<br />
<br />
{{bc|<nowiki><br />
[archlinuxcn]<br />
Server = http://repo.archlinuxcn.org/$arch<br />
## or install archlinuxcn-mirrorlist-git and use the mirrorlist<br />
#Include = /etc/pacman.d/archlinuxcn-mirrorlist<br />
</nowiki>}}<br />
<br />
=== archstrike ===<br />
<br />
* '''Maintainer:''' [https://archstrike.org/team The ArchStrike Team]<br />
* '''Description:''' A repository for security professionals and enthusiasts<br />
* '''Upstream page:''' https://archstrike.org/<br />
* '''Key-ID:''' 9D5F1C051D146843CDA4858BDE64825E7CBC0D51<br />
<br />
{{Note|ArchStrike specific instructions can be found at https://archstrike.org/wiki/setup}}<br />
<br />
{{bc|<nowiki><br />
[archstrike]<br />
Server = https://mirror.archstrike.org/$arch/$repo<br />
</nowiki>}}<br />
<br />
=== archzfs ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/minextu Jan Houben (minextu)]<br />
* '''Description:''' Packages for ZFS on Arch Linux.<br />
* '''Upstream page:''' https://github.com/archzfs/archzfs<br />
* '''Key-ID:''' F75D9D76<br />
<br />
{{bc|<nowiki><br />
[archzfs]<br />
Server = http://archzfs.com/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== archzfs-kernels ===<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/endre/ Endre Szabo]<br />
* '''Description:''' Official kernel packages matching the most recent [[# archzfs|ZFS packages]] kernel version dependencies. Use this to be able to upgrade your kernel package every time whilst using ZFS packages above :)<br />
* '''Upstream page:''' https://end.re/archzfs-kernels/<br />
* '''Key-ID:''' Not needed as packages are from core repos and signed officially.<br />
<br />
{{bc|<nowiki><br />
[archzfs-kernels]<br />
Server = http://end.re/$repo/<br />
</nowiki>}}<br />
<br />
=== ashleyis ===<br />
<br />
* '''Maintainer:''' Ashley Towns ([https://aur.archlinux.org/account/ashleyis/ ashleyis])<br />
* '''Description:''' Debug versions of SDL, chipmunk, libtmx and other misc game libraries. also swift-lang and some other AUR packages <br />
* '''Key-ID:''' B1A4D311<br />
<br />
{{bc|<nowiki><br />
[ashleyis]<br />
Server = http://arch.ashleytowns.id.au/repo/$arch<br />
</nowiki>}}<br />
<br />
=== Bennix Repo ===<br />
<br />
* '''Maintainer:''' Ben P. Dorsi-Todaro ([https://techmeout.org Tech Me Out])<br />
* '''Description:''' Packages [http://ben-dorsi-todaro.com/ Ben P. Dorsi-Todaro] uses and are not listed in repos, or packages built by [http://www.bigbenshosting.com/ Big Ben's Web Hosting] <br />
* '''Key-ID:''' F14BB858F6253DA0<br />
<br />
{{bc|<nowiki><br />
[bigben-repo]<br />
SigLevel = Optional TrustAll<br />
Server = http://bennix.net/bigben-repo/<br />
</nowiki>}}<br />
<br />
=== blackeagle-pre-community ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#idevolder Ike Devolder]<br />
* '''Description:''' testing of the by me maintaned packages before moving to ''community'' repository<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[blackeagle-pre-community]<br />
Server = https://repo.herecura.be/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== chaotic-aur ===<br />
<br />
* '''Maintainer:''' [https://github.com/pedrohlc PedroHLC], and [https://github.com/librewish Librewish]<br />
* '''Description:''' Auto builds AUR packages the maintainer uses, update them hourly (a few are daily). Hosted in São Carlos, SP, Brazil. Has two mirrors (Germany and USA). x86_64 only. Has over 1600 packages.<br />
* '''Key-ID:''' [http://pool.sks-keyservers.net/pks/lookup?search=0x3056513887B78AEB&fingerprint=on&op=index], fingerprint {{ic|EF92 5EA6 0F33 D0CB 85C4 4AD1 3056 5138 87B7 8AEB }}<br />
* '''Note:''' See [https://lonewolf.pedrohlc.com/chaotic-aur maintainer's notes].<br />
{{bc|<nowiki><br />
[chaotic-aur]<br />
Server = http://lonewolf-builder.duckdns.org/$repo/x86_64<br />
Server = http://chaotic.bangl.de/$repo/x86_64<br />
Server = https://repo.kitsuna.net/x86_64<br />
</nowiki>}}<br />
<br />
=== catalyst ===<br />
<br />
* '''Maintainer:''' [[User:Vi0L0|Vi0l0]]<br />
* '''Description:''' ATI Catalyst proprietary drivers.<br />
* '''Key-ID:''' 653C3094<br />
<br />
{{bc|<nowiki><br />
[catalyst]<br />
Server = http://167.86.114.169/arch/catalyst/$arch<br />
</nowiki>}}<br />
<br />
=== catalyst-hd234k ===<br />
<br />
* '''Maintainer:''' [[User:Vi0L0|Vi0l0]]<br />
* '''Description:''' ATI Catalyst proprietary drivers.<br />
* '''Key-ID:''' 653C3094<br />
<br />
{{bc|<nowiki><br />
[catalyst-hd234k]<br />
Server = http://167.86.114.169/arch/catalyst-hd234k/$arch<br />
</nowiki>}}<br />
<br />
=== city ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#bgyorgy Balló György]<br />
* '''Description:''' Experimental/unpopular packages.<br />
* '''Upstream page:''' https://pkgbuild.com/~bgyorgy/city.html<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[city]<br />
Server = https://pkgbuild.com/~bgyorgy/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
=== coderkun-aur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/coderkun/ coderkun]<br />
* '''Description:''' AUR packages with random software. Supporting package deltas and package and database signing.<br />
* '''Upstream page:''' https://www.suruatoel.xyz/arch<br />
* '''Key-ID:''' 39E27199A6BEE374<br />
* '''Keyfile:''' [https://www.suruatoel.xyz/coderkun.asc https://www.suruatoel.xyz/coderkun.asc]<br />
<br />
{{bc|<nowiki><br />
[coderkun-aur]<br />
Server = http://arch.suruatoel.xyz/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== coderkun-aur-audio ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/coderkun/ coderkun]<br />
* '''Description:''' AUR packages with audio-related (realtime kernels, lv2-plugins, …) software. Supporting package deltas and package and database signing.<br />
* '''Upstream page:''' https://www.suruatoel.xyz/arch<br />
* '''Key-ID:''' 39E27199A6BEE374<br />
* '''Keyfile:''' [https://www.suruatoel.xyz/coderkun.key https://www.suruatoel.xyz/coderkun.key]<br />
<br />
{{bc|<nowiki><br />
[coderkun-aur-audio]<br />
Server = http://arch.suruatoel.xyz/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== devkitpro ===<br />
<br />
* '''Maintainer:''' [https://devkitpro.org/ wintermute]<br />
* '''Description:''' Provides Homebrew toolchains for the Nintendo Wii, Gamecube, DS, GBA, Gamepark gp32 and Nintendo Switch<br />
* '''Upstream page:''' https://devkitpro.org/wiki/devkitPro_pacman<br />
* '''Key-ID:''' F7FD5492264BB9D0<br />
<br />
{{Note|Repository has its own additional keyring at https://downloads.devkitpro.org/devkitpro-keyring-r1.787e015-2-any.pkg.tar.xz.}}<br />
<br />
{{bc|<nowiki><br />
[dkp-libs]<br />
Server = https://downloads.devkitpro.org/packages<br />
[dkp-linux]<br />
Server = https://downloads.devkitpro.org/packages/linux<br />
</nowiki>}}<br />
<br />
=== disastrousaur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/TheGoliath TheGoliath]<br />
* '''Description:''' Well known AUR package managers, many of the most popular packages available on the AUR, as well as those that I favor myself<br />
* '''Upstream page:''' https://mirror.repohost.de/disastrousaur<br />
* '''Key-ID:''' CBAE582A876533FD<br />
* '''Keyfile:''' [https://mirror.repohost.de/disastrousaur.key https://mirror.repohost.de/disastrousaur.key]<br />
{{Warning|disastrousaur and disastrousarm have now been merged under the disastrousaur name Please make sure you have changed the Server URL for your repos accordingly. Builds for other architectures may come out as I got enough time getting things running. }}<br />
{{bc|<nowiki><br />
[disastrousaur]<br />
Server = https://mirror.repohost.de/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== dvzrv ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#dvzrv David Runge]<br />
* '''Description:''' [[Realtime kernel patchset]] (aka. {{AUR|linux-rt}} and {{AUR|linux-rt-lts}})<br />
* '''Key-ID:''' Not needed, as maintainer is a developer/TU<br />
<br />
{{bc|<nowiki><br />
[dvzrv]<br />
Server = https://pkgbuild.com/~dvzrv/repo/$arch<br />
</nowiki>}}<br />
<br />
=== ear ===<br />
<br />
* '''Maintainer:''' [https://wardsegers.be Ward Segers], <br />
* '''Description:''' Editicalu's ArchLinux Repository. Contains precompiled AUR packages (mostly the ones maintained by editicalu)<br />
* '''Homepage:''' https://ear.wardsegers.be/<br />
* '''Upstream page:''' https://gitlab.com/editicalu/ear<br />
* '''Keyfile:''' https://ear.wardsegers.be/signingkey.asc<br />
* '''Key-ID:''' A9C4E7734638ACF8<br />
<br />
{{Note|Instructions can be found at https://ear.wardsegers.be}}<br />
<br />
{{bc|<nowiki><br />
[ear]<br />
Server = https://ear.wardsegers.be/$arch<br />
</nowiki>}}<br />
<br />
=== eatabrick ===<br />
<br />
* '''Maintainer:''' bentglasstube<br />
* '''Description:''' Packages for software written by (and a few just compiled by) bentglasstube.<br />
<br />
{{bc|<nowiki><br />
[eatabrick]<br />
Server = http://repo.eatabrick.org/$arch<br />
</nowiki>}}<br />
<br />
=== eschwartz ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#eschwartz Eli Schwartz]<br />
* '''Description:''' Personal repo with AUR packages and some core packages from git (including glibc and pacman). Contains debug packages.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[eschwartz]<br />
Server = https://pkgbuild.com/~eschwartz/repo/$arch<br />
</nowiki>}}<br />
<br />
=== ffy00 ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#FFY00 Filipe Laíns]<br />
* '''Description:''' Personal repo. Contains some packages related to the D language.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[ffy00]<br />
Server = https://pkgbuild.com/~ffy00/repo<br />
</nowiki>}}<br />
<br />
=== fusion809 ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/fusion809|Brenton Horne]] (brentonhorne77 at gmail dot com).<br />
* '''Description:''' Provides a few AUR and other packages I like. Like CodeLite and bleeding-edge (latest release within 1 day of its release) GVim (GTK 2 interface).<br />
* '''Package list:''' http://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/x86_64/<br />
* '''Key-ID:''' 03264DDCD606DC98<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/x86_64/home_fusion809_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_fusion809_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/$arch<br />
</nowiki>}}<br />
<br />
=== grawlinson ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/grawlinson George Rawlinson]<br />
* '''Description:''' AUR packages maintained by the user as well as some experimental packages.<br />
* '''Package list:''' https://repo.nullpointer.io<br />
* '''Key-ID:''' 25ea6900d9ea5ebc<br />
* '''Keyfile:''' https://nullpointer.io/grawlinson.key<br />
<br />
{{bc|<nowiki><br />
[grawlinson]<br />
Server = https://repo.nullpointer.io<br />
</nowiki>}}<br />
<br />
=== gnome-devel ===<br />
<br />
* '''Maintainer:''' [https://plus.google.com/+AndresFernandezperonista Andres Fernandez], [https://plus.google.com/+FernandoFernandezBerel Fernando Fernandez]<br />
* '''Description:''' GNOME development releases. For testing purposes only.<br />
* '''Package list:''' https://softwareperonista.com.ar/repo/archlinux/gnome-devel/x86_64/<br />
* '''Key-ID:''' DDCE9FD63370080B<br />
<br />
{{Note|Must be put above {{ic|[testing]}} repository.}}<br />
<br />
{{bc|<nowiki><br />
[gnome-devel]<br />
Server = https://softwareperonista.com.ar/repo/archlinux/gnome-devel/$arch<br />
</nowiki>}}<br />
<br />
=== herecura ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#idevolder Ike Devolder]<br />
* '''Description:''' additional packages not found in the ''community'' repository<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[herecura]<br />
Server = https://repo.herecura.be/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== holo ===<br />
<br />
* '''Maintainer:''' Stefan Majewsky <holo-pacman@posteo.de> (please prefer to report issues at [https://github.com/majewsky/holo-pacman-repo/issues Github])<br />
* '''Description:''' Packages for [https://holocm.org Holo configuration management], including compatible plugins and tools.<br />
* '''Upstream page:''' https://github.com/majewsky/holo-pacman-repo<br />
* '''Package list:''' https://repo.holocm.org/archlinux/x86_64<br />
* '''Key-ID:''' 0xF7A9C9DC4631BD1A<br />
<br />
{{bc|<nowiki><br />
[holo]<br />
Server = https://repo.holocm.org/archlinux/x86_64<br />
</nowiki>}}<br />
<br />
=== ivasilev ===<br />
<br />
* '''Maintainer:''' [https://ivasilev.net Ianis G. Vasilev]<br />
* '''Description:''' A variety of packages, mostly my own software and AUR builds.<br />
* '''Upstream page:''' https://ivasilev.net/pacman<br />
* '''Key-ID:''' [https://pgp.mit.edu/pks/lookup?op=vindex&search=0xB77A3C8832838F1F80ADFD7E1D0507B417DAB671 17DAB671]<br />
<br />
{{bc|<nowiki><br />
[ivasilev]<br />
Server = https://ivasilev.net/pacman/$arch<br />
</nowiki>}}<br />
<br />
=== jlk ===<br />
<br />
* '''Maintainer:''' [[User:Lahwaacz|Jakub Klinkovský]]<br />
* '''Description:''' Various packages from the ABS and AUR. Modified packages are in the {{ic|modified}} group.<br />
* '''Upstream page:''' https://jlk.fjfi.cvut.cz/arch/repo/README.html<br />
* '''Key-ID:''' 932BA3FA0C86812A32D1F54DAB5964AEB9FEDDDC<br />
<br />
{{bc|<nowiki><br />
[jlk]<br />
Server = https://jlk.fjfi.cvut.cz/arch/repo<br />
</nowiki>}}<br />
<br />
=== llvm-svn ===<br />
<br />
* '''Maintainer:''' [[User:Kerberizer|Luchesar V. ILIEV (kerberizer)]]<br />
* '''Description:''' [https://aur.archlinux.org/pkgbase/llvm-svn llvm-svn] and [https://aur.archlinux.org/pkgbase/lib32-llvm-svn lib32-llvm-svn] from AUR: the LLVM compiler infrastructure, the Clang frontend, and the tools associated with it<br />
* '''Key-ID:''' [https://sks-keyservers.net/pks/lookup?op=vindex&search=0x76563F75679E4525&fingerprint=on&exact=on 0x76563F75679E4525], fingerprint {{ic|D16C F22D 27D1 091A 841C 4BE9 7656 3F75 679E 4525}}<br />
<br />
{{bc|<nowiki><br />
[llvm-svn]<br />
Server = https://repos.uni-plovdiv.net/archlinux/$repo/$arch<br />
</nowiki>}}<br />
<br />
<br />
=== markzz ===<br />
<br />
* '''Maintainer:''' [[User:Markzz|Mark Weiman (markzz)]]<br />
* '''Description:''' Packages that markzz maintains or uses on the AUR; this includes Linux with the vfio patchset ({{AUR|linux-vfio}} and {{AUR|linux-vfio-lts}}), and packages for analysis of network data.<br />
* '''Key ID:''' DEBB9EE4<br />
<br />
{{Note|If you want to add the key by installing the ''markzz-keyring'' package, temporarily add {{ic|1=SigLevel = Never}} into the repository section.}}<br />
<br />
{{bc|<nowiki><br />
[markzz]<br />
Server = https://repo.markzz.com/arch/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== maximbaz ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#maximbaz Maxim Baz]<br />
* '''Description:''' Personal repo with AUR packages.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[maximbaz]<br />
Server = https://pkgbuild.com/~maximbaz/repo/<br />
</nowiki>}}<br />
<br />
=== me176c ===<br />
<br />
* '''Maintainer:''' [https://github.com/lambdadroid lambdadroid]<br />
* '''Description:''' Packages for [[ASUS MeMO Pad 7 (ME176C(X))]]<br />
* '''Key-ID:''' 2B1138A8BB59D786A3BF42AAD996DA70572407FB<br />
<br />
{{bc|<nowiki><br />
[me176c]<br />
Server = https://me176c.uber.space/archlinux<br />
</nowiki>}}<br />
<br />
=== miffe ===<br />
<br />
* '''Maintainer:''' [https://bbs.archlinux.org/profile.php?id=4059 miffe]<br />
* '''Description:''' AUR packages maintained by miffe, e.g. linux-mainline<br />
* '''Key ID:''' 313F5ABD<br />
<br />
{{bc|<nowiki><br />
[miffe]<br />
Server = https://arch.miffe.org/$arch/<br />
</nowiki>}}<br />
<br />
=== mikelpint ===<br />
<br />
* '''Maintainer:''' [[User:Mikelpint|Mikel Pintado (Mikelpint)]]<br />
* '''Description:''' Packages that mikelpint maintains in the AUR.<br />
* '''Key ID:''' 5CA78FC65B189E2B<br />
<br />
{{bc|<nowiki><br />
[mikelpint]<br />
Server = https://mikelpint.github.io/repository/archlinux/repo<br />
</nowiki>}}<br />
<br />
=== Minerva W Science ===<br />
<br />
* '''Maintainer:''' Minerva W<br />
* '''Description:''' [[OpenFOAM]] packages.<br />
* '''Key-ID:''' 3FF21B78117507DA<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/Minerva_W:/Science/Arch_Extra/x86_64/home_Minerva_W_Science_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_Minerva_W_Science_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/Minerva_W:/Science/Arch_Extra/$arch <br />
</nowiki>}}<br />
<br />
=== mobile ===<br />
<br />
* '''Maintainer:''' [https://keybase.io/farwayer farwayer]<br />
* '''Description:''' React Native and Android development<br />
* '''Upstream page:''' https://keybase.pub/farwayer/arch/mobile/<br />
* '''Key ID:''' 7943315502A936D7<br />
<br />
{{bc|<nowiki><br />
[mobile]<br />
Server = https://farwayer.keybase.pub/arch/$repo<br />
</nowiki>}}<br />
<br />
=== nah ===<br />
<br />
* '''Maintainer:''' [https://yeah.nah.nz phillid]<br />
* '''Description:''' Pre-built versions of the (slow-to-build) graph-tool python libraries, mingw-w64<br />
* '''Key ID:''' 7BF3D17D0884BF5B<br />
<br />
{{bc|<nowiki><br />
[nah]<br />
Server = https://repo.nah.nz/$repo<br />
</nowiki>}}<br />
<br />
=== nickcao ===<br />
<br />
* '''Maintainer:''' [https://nichi.co/about NickCao]<br />
* '''Description:''' Some (useful for some) packages from me, and some aur packages I personally use.<br />
* '''Key-ID:''' 09CC69622E8D4EE343B4E8954D0BA456DF028C15<br />
<br />
{{bc|<nowiki><br />
[nickcao]<br />
Server = https://repo.nichi.co/$arch<br />
</nowiki>}}<br />
<br />
=== origincode ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/OriginCode OriginCode]<br />
* '''Description:''' A few staging or testing packages from [[#archlinuxcn]], and some daily use packages.<br />
* '''Key-ID:''' 0A5BAD445D80C1CC & 62BF97502AE10D22<br />
<br />
{{bc|<nowiki><br />
[origincode]<br />
Server = https://repo.origincode.me/repo/$arch<br />
</nowiki>}}<br />
<br />
=== pkgbuilder ===<br />
<br />
* '''Maintainer:''' [https://chriswarrick.com/ Chris Warrick]<br />
* '''Description:''' A repository for PKGBUILDer, a Python AUR helper.<br />
* '''Upstream page:''' https://github.com/Kwpolska/pkgbuilder<br />
* '''Key-ID:''' 5EAAEA16<br />
<br />
{{bc|<nowiki><br />
[pkgbuilder]<br />
Server = https://pkgbuilder-repo.chriswarrick.com/<br />
</nowiki>}}<br />
<br />
=== post-factum kernels ===<br />
<br />
* '''Maintainer''': [https://aur.archlinux.org/account/post-factum Oleksandr Natalenko aka post-factum]<br />
* '''Upstream page''': https://gitlab.com/post-factum/pf-kernel/wikis/README<br />
* '''Description''': [[Kernel#Major_patchsets|pf-kernel]] packages by its developer, post-factum<br />
* '''Key-ID:''': 95C357D2AF5DA89D<br />
* '''Keyfile''': https://download.opensuse.org/repositories/home:/post-factum:/kernels/Arch/x86_64/home_post-factum_kernels_Arch.key<br />
<br />
{{bc|<nowiki><br />
[home_post-factum_kernels_Arch]<br />
Server = https://download.opensuse.org/repositories/home:/post-factum:/kernels/Arch/$arch<br />
</nowiki>}}<br />
<br />
=== QOwnNotes ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/pbek Patrizio Bekerle] (pbek), QOwnNotes author<br />
* '''Description:''' QOwnNotes is a open source notepad and todo list manager with markdown support and [[ownCloud]] integration.<br />
* '''Key-ID:''' FFC43FC94539B8B0<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Arch_Extra/x86_64/home_pbek_QOwnNotes_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_pbek_QOwnNotes_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Arch_Extra/$arch<br />
</nowiki>}}<br />
<br />
=== qt-debug ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/The-Compiler The Compiler]<br />
* '''Description:''' Qt/PyQt builds with debug symbols<br />
* '''Upstream page:''' https://github.com/qutebrowser/qt-debug-pkgbuild<br />
* '''Key-ID:''' D6A1C70FE80A0C82<br />
<br />
{{bc|<nowiki><br />
[qt-debug]<br />
Server = https://qutebrowser.org/qt-debug/$arch<br />
</nowiki>}}<br />
<br />
=== quarry ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#anatolik anatolik]<br />
* '''Description:''' Arch binary repository for [http://rubygems.org/ Rubygems] packages. See [https://bbs.archlinux.org/viewtopic.php?id=182729 forum announcement] for more information.<br />
* '''Sources:''' https://github.com/anatol/quarry<br />
* '''Key-ID:''' Not needed, as maintainer is a developer<br />
<br />
{{bc|<nowiki><br />
[quarry]<br />
Server = https://pkgbuild.com/~anatolik/quarry/x86_64/<br />
</nowiki>}}<br />
<br />
=== repo-ck ===<br />
<br />
Kernel and modules with Brain Fuck Scheduler and all the goodies in the ck1 patch set.<br />
<br />
See [[/Repo-ck]].<br />
<br />
=== seblu ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#seblu Sébastien Luttringer]<br />
* '''Description:''' All seblu useful pre-built packages, some homemade (linux-seblu-meta, zfs-dkms, spotify, masterpdfeditor, etc).<br />
* '''Key-ID:''' Not required, as maintainer is a Developer<br />
<br />
{{bc|<nowiki><br />
[seblu]<br />
Server = https://al1.seblu.net/$repo/$arch<br />
Server = https://al2.seblu.net/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== seiichiro ===<br />
<br />
* '''Maintainer:''' [https://www.seiichiro0185.org Stefan Brand (seiichiro0185)]<br />
* '''Description:''' AUR-packages I use frequently<br />
* '''Key-ID:''' 805517CC<br />
<br />
{{bc|<nowiki><br />
[seiichiro]<br />
Server = https://www.seiichiro0185.org/repo/$arch<br />
</nowiki>}}<br />
<br />
=== selinux ===<br />
<br />
* '''Maintainer:''' [https://github.com/swordfeng swordfeng]<br />
* '''Description:''' Unofficial (personal) builds for [[SELinux]] packages. PKGBUILDs are taken from AUR instead of the upstream GitHub repo.<br />
* '''Upstream page:''' https://github.com/archlinuxhardened/selinux<br />
* '''Key-ID:''' 7691FA63FE91CAFDD42A4AF08323B00E97DF0E6D (subkey B988167F59A3AF8368D55D65A7862FD48B72D83B is specifically used for signing packages)<br />
* '''Keyfile:''' https://repo.taiho.moe/key.asc<br />
<br />
{{bc|<nowiki><br />
[selinux]<br />
Server = https://repo.taiho.moe/$repo<br />
</nowiki>}}<br />
<br />
=== sergej-repo ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#spupykin Sergej Pupykin]<br />
* '''Description:''' psi-plus, owncloud-git, ziproxy, android, MySQL, and other stuff. Some packages also available for armv7h.<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[sergej-repo]<br />
Server = http://repo.p5n.pp.ru/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
=== siosm-aur ===<br />
<br />
* '''Maintainer:''' [https://tim.siosm.fr/about/ Timothee Ravier]<br />
* '''Description:''' packages also available in the Arch User Repository, sometimes with minor fixes<br />
* '''Upstream page:''' https://tim.siosm.fr/repositories/<br />
* '''Key-ID:''' 78688F83<br />
<br />
{{bc|<nowiki><br />
[siosm-aur]<br />
Server = http://siosm.fr/repo/$repo/<br />
</nowiki>}}<br />
<br />
=== sublime-text ===<br />
<br />
* '''Maintainer:''' Sublime Text developer<br />
* '''Description:''' Sublime Text editor packages from developer's repository<br />
* '''Upstream page:''' https://www.sublimetext.com/docs/3/linux_repositories.html#pacman<br />
* '''Key-ID:''' 8A8F901A<br />
<br />
{{bc|<nowiki><br />
[sublime-text]<br />
Server = https://download.sublimetext.com/arch/stable/x86_64<br />
</nowiki>}}<br />
<br />
=== subtitlecomposer ===<br />
<br />
* '''Maintainer:''' Mladen Milinkovic (maxrd2)<br />
* '''Description:''' Subtitle Composer stable and nightly builds<br />
* '''Upstream page:''' https://github.com/maxrd2/subtitlecomposer<br />
* '''Key-ID:''' EF9D9B26<br />
<br />
{{bc|<nowiki><br />
[subtitlecomposer]<br />
Server = https://smoothware.net/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== trinity ===<br />
<br />
* '''Maintainer:''' Michael J. Manley <mmanley@ntge.net><br />
* '''Description:''' [[Trinity]] Desktop Environment<br />
* '''Key-ID:''' 5F710C1E<br />
<br />
{{bc|<nowiki><br />
[trinity]<br />
Server = https://repo.nasutek.com/arch/contrib/trinity/x86_64<br />
</nowiki>}}<br />
<br />
=== valveaur ===<br />
<br />
* '''Maintainer:''' John Schoenick <johns@valvesoftware.com> (https://valvesoftware.com)<br />
* '''Description:''' A repository by Valve Software Providing The Linux-fsync kernel and modules, including the futex-wait-multiple patchset for testing with Proton fsync & Mesa with the ACO compiler patchset. <br />
* '''Upstream page:''' https://steamcommunity.com/linux<br />
* '''Key-ID:''' 8DC2CE3A3D245E64<br />
<br />
{{bc|<nowiki><br />
[valveaur]<br />
Server = http://repo.steampowered.com/arch/valveaur<br />
</nowiki>}}<br />
<br />
=== xuanrui ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/xuanruiqi Xuanrui Qi (xuanruiqi)]<br />
* '''Description:''' xuanruiqi's own packages and frequently-used packages, mainly of interest to functional programmers.<br />
* '''Upstream Page:''' https://www.xuanruiqi.com/linux.html<br />
* '''Key-ID:''' 6E06FBC8<br />
<br />
{{bc|<nowiki><br />
[xuanrui]<br />
Server = https://arch.xuanruiqi.com/repo<br />
</nowiki>}}<br />
<br />
=== xyne-x86_64 ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#xyne Xyne]<br />
* '''Description:''' A repository for Xyne's own projects.<br />
* '''Upstream page:''' http://xyne.archlinux.ca/projects/<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[xyne-x86_64]<br />
# Server = https://xyne.archlinux.ca/repos/xyne # It returns error 404 or 406 (varying). Use the line below:<br />
Server = http://xyne.archlinux.ca/bin/repo.php?file=<br />
</nowiki>}}<br />
<br />
=== home-thaodan ===<br />
<br />
* '''Maintainer''': [https://aur.archlinux.org/account/Thaodan Thaodan]<br />
* '''Upstream page''': https://gitlab.com/Thaodan/linux-pf<br />
* '''Description''': [[Kernel#Major_patchsets|pf-kernel]] and other packages by pf-kernel fork developer, Thaodan<br />
* '''Gitlab Project''': https://gitlab.com/Thaodan/repo-home-thaodan-repo<br />
* '''Key-ID:''': BBFE2FD421597395E4FC8C8DF6C85FEE79D661A4<br />
<br />
{{bc|<nowiki><br />
[home-thaodan]<br />
Server = https://thaodan.de/public/archlinux/home-thaodan/$arch<br />
</nowiki>}}<br />
<br />
== Unsigned ==<br />
<br />
{{Note|Users will need to add the following to these entries: {{ic|1=SigLevel = PackageOptional}}}}<br />
<br />
=== alucryd ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Various packages Maxime Gauduin maintains (or not) in the AUR.<br />
<br />
{{bc|<nowiki><br />
[alucryd]<br />
Server = https://pkgbuild.com/~alucryd/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== alucryd-multilib ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Various packages needed to run Steam without its runtime environment.<br />
<br />
{{bc|<nowiki><br />
[alucryd-multilib]<br />
Server = https://pkgbuild.com/~alucryd/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== andrwe ===<br />
<br />
* '''Maintainer:''' Andrwe Lord Weber<br />
* '''Description:''' contains programs I'm using on many systems<br />
* '''Upstream page:''' http://andrwe.org/linux/repository<br />
<br />
{{bc|<nowiki><br />
[andrwe]<br />
Server = http://repo.andrwe.org/$arch<br />
</nowiki>}}<br />
<br />
=== archgeotux ===<br />
<br />
* '''Maintainer:''' Samuel Mesa<br />
* '''Description:''' Geospatial and geographic information system applications<br />
* '''Upstream page:''' https://archgeotux.sourceforge.io/<br />
<br />
{{bc|<nowiki><br />
[archgeotux]<br />
Server = https://downloads.sourceforge.net/project/archgeotux/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxfr ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:'''<br />
* '''Upstream page:''' http://afur.archlinux.fr<br />
<br />
{{bc|<nowiki><br />
[archlinuxfr]<br />
Server = http://repo.archlinux.fr/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxgr ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:''' many interesting packages provided by the Hellenic (Greek) Arch Linux community<br />
<br />
{{bc|<nowiki><br />
[archlinuxgr]<br />
Server = http://archlinuxgr.tiven.org/archlinux/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxgr-kde4 ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:''' KDE4 packages (plasmoids, themes etc) provided by the Hellenic (Greek) Arch Linux community<br />
<br />
{{bc|<nowiki><br />
[archlinuxgr-kde4]<br />
Server = http://archlinuxgr.tiven.org/archlinux-kde4/$arch<br />
</nowiki>}}<br />
<br />
=== aur-av-bin ===<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/milk/ milkii] (ping me on Freenode)<br />
* '''Description:''' Precompiled Arch Linux binary packages of mostly audio and music related software from the AUR.<br />
* '''Upstream page:''' https://github.com/mxmilkb/aur-av-bin<br />
<br />
{{bc|<nowiki><br />
[aur-av-bin]<br />
SigLevel = PackageOptional<br />
Server = https://github.com/mxmilkb/aur-av-bin/releases/download/repository<br />
</nowiki>}}<br />
<br />
=== craftdestiny ===<br />
{{Out of date|Neither the maintainer's website nor the repo work.|section=craftdestiny}}<br />
<br />
* '''Maintainer:''' [https://craftdestiny.ovh LinuxVieLoisir]<br />
* '''Description:''' A Craft Destiny repository is there to avoid long compilation on some software. It also adds some very useful additional software.<br />
<br />
{{bc|<nowiki><br />
[craftdestiny]<br />
Server = https://miroir.craftdestiny.ovh/archlinux-repo/<br />
</nowiki>}}<br />
<br />
=== dx37essentials ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/DragonX256 DragonX256]<br />
* '''Description:''' Personal repository. Contains packages from AUR, which I using every day.<br />
* '''Git repo:''' https://gitlab.com/DX37/dx37essentials<br />
* '''Upstream page:''' https://dx37.gitlab.io/dx37essentials<br />
<br />
{{bc|<nowiki><br />
[dx37essentials]<br />
Server = https://dx37.gitlab.io/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== heftig ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#heftig Jan Steffens]<br />
* '''Description:''' Includes pulseaudio-git, pavucontrol-git, and firefox-developer-edition<br />
* '''Upstream page:''' https://bbs.archlinux.org/viewtopic.php?id=117157<br />
<br />
{{bc|<nowiki><br />
[heftig]<br />
Server = https://pkgbuild.com/~heftig/repo/$arch<br />
</nowiki>}}<br />
<br />
=== jkanetwork ===<br />
<br />
* '''Maintainer:''' kprkpr <kevin01010 at gmail dot com><br />
* '''Maintainer:''' Joselucross <jlgarrido97 at gmail dot com><br />
* '''Description:''' Packages of AUR like pimagizer,stepmania,yaourt,linux-mainline,wps-office,grub-customizer,some IDE.. Open for all that wants to contribute<br />
* '''Upstream page:''' http://repo.jkanetwork.com/<br />
<br />
{{bc|<nowiki><br />
[jkanetwork]<br />
Server = http://repo.jkanetwork.com/repo/$repo/<br />
</nowiki>}}<br />
<br />
=== kodi-devel-prebuilt ===<br />
<br />
* '''Maintainer:''' asm0dey <pavel.finkelshtein+AUR@gmail.com><br />
* '''Description:''' Prebuilt packages of kodi-devel from AUR<br />
* '''Upstream page:''' {{AUR|kodi-devel}}<br />
<br />
{{bc|<nowiki><br />
[kodi-devel-prebuilt]<br />
Server = https://asm0dey.github.io/$repo/$arch<br />
SigLevel = PackageOptional<br />
</nowiki>}}<br />
<br />
=== mesa-git ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#lcarlier Laurent Carlier]<br />
* '''Description:''' Mesa git builds for the ''testing'' and ''multilib-testing'' repositories<br />
<br />
{{bc|<nowiki><br />
[mesa-git]<br />
Server = https://pkgbuild.com/~lcarlier/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== Mountain ===<br />
{{Out of date|Neither the Github site nor the maintainer's Wordpress site exist|section=Mountain}}<br />
<br />
* '''Maintainer:''' [https://mountainlinux.wordpress.com Minzord]<br />
* '''Description:''' Popular AUR Packages and some Driver Wifi. <br />
<br />
{{bc|<nowiki><br />
[Mountain]<br />
SigLevel = Never<br />
Server = https://mountain-linux.github.io/Mountain/$arch<br />
</nowiki>}}<br />
<br />
=== oracle ===<br />
<br />
* '''Maintainer:''' [[User:Malvineous]]<br />
* '''Description:''' [[Oracle Database client]] and associated tools, built from AUR packages and hosted on AWS S3 using [https://github.com/Malvineous/archlinux-pacman-repo Makefile scripts].<br />
* '''Conditions:''' By using this repository you agree to the [http://www.oracle.com/technetwork/licenses/instant-client-lic-152016.html Oracle Technology Network Development and Distribution License Terms for Instant Client].<br />
{{bc|<nowiki><br />
[oracle]<br />
Server = http://linux.shikadi.net/arch/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== ownstuff ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/Martchus Martchus]<br />
* '''Description:''' A lot of packages from the AUR, e.g. a great number packages for mingw-w64 and Android cross compilation, fonts, Perl modules, tools like {{AUR|tageditor}}, {{AUR|syncthingtray}}, {{AUR|subtitlecomposer}} and {{AUR|qmplay2}}<br />
* '''Upstream page''': https://github.com/Martchus/PKGBUILDs (sources beside the AUR) and https://martchus.no-ip.biz/repoindex (package browser/search)<br />
<br />
{{bc|<nowiki><br />
[ownstuff-testing]<br />
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch<br />
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch<br />
<br />
[ownstuff]<br />
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch<br />
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
{{Note|The testing repository is supposed to be used together with the official testing repositories.}}<br />
<br />
=== pantheon ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Repository containing Pantheon-related packages<br />
<br />
{{bc|<nowiki><br />
[pantheon]<br />
Server = https://pkgbuild.com/~alucryd/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== pietma ===<br />
<br />
* '''Maintainer:''' MartiMcFly <martimcfly@autorisation.de><br />
* '''Description:''' Arch User Repository packages [https://aur.archlinux.org/packages/?K=martimcfly&SeB=m I create or maintain.].<br />
* '''Upstream page:''' http://pietma.com/tag/aur/<br />
<br />
{{bc|<nowiki><br />
[pietma]<br />
Server = http://repository.pietma.com/nexus/content/repositories/archlinux/$arch/$repo<br />
</nowiki>}}<br />
<br />
=== pnsft-pur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/ponsfoot ponsfoot]<br />
* '''Description:''' Japanese input method packages Mozc (vanilla) and libkkc<br />
<br />
{{bc|<nowiki><br />
[pnsft-pur]<br />
Server = https://osdn.net/projects/ponsfoot-aur/storage/pur/x86_64/<br />
</nowiki>}}<br />
<br />
=== stx4 ===<br />
<br />
* '''Maintainer:''' StarterX4 <starterx4[at]gmail.com><br />
* '''Description:''' Any – some fonts and fakepkgs; x86_64 – archived yet might useful packages (like PacmanXG4) and some AUR soft (like OpenBoard).<br />
* '''Upstream Page:''' https://keybase.pub/starterx4/repos/arch/<br />
<br />
{{bc|<nowiki><br />
[stx4-any]<br />
SigLevel = Never<br />
Server = https://starterx4.keybase.pub/repos/arch/any/stx4<br />
<br />
[stx4-x86_64]<br />
SigLevel = Never<br />
Server = https://starterx4.keybase.pub/repos/arch/x86_64/stx4<br />
</nowiki>}}<br />
<br />
=== titanium ===<br />
<br />
* '''Maintainer:''' Pyrerune <pyrerune@gmail.com><br />
* '''Description:''' Repository containing software I develop.<br />
{{bc|<nowiki><br />
[titanium]<br />
Server = https://pyrerune.github.io/titanium/$arch<br />
</nowiki>}}<br />
<br />
=== userrepository ===<br />
<br />
* '''Maintainer:''' [https://twitter.com/brunomiguel Bruno Miguel] <brunoalexandremiguel@gmail.com><br />
* '''Description:''' Repository containing software from AUR<br />
{{bc|<nowiki><br />
[userrepository]<br />
Server = https://userrepository.eu<br />
</nowiki>}}</div>Milkhttps://wiki.archlinux.org/index.php?title=Unofficial_user_repositories&diff=592557Unofficial user repositories2019-12-25T02:10:34Z<p>Milk: add === aur-av-bin === https://github.com/mxmilkb/aur-av-bin</p>
<hr />
<div>[[Category:Package management]]<br />
[[Category:Lists]]<br />
[[ja:非公式ユーザーリポジトリ]]<br />
[[zh-hans:Unofficial user repositories]]<br />
{{Related articles start}}<br />
{{Related|pacman-key}}<br />
{{Related|Official repositories}}<br />
{{Related articles end}}<br />
This article lists binary repositories freely created and shared by the community, often providing pre-built versions of PKGBUILDS found in the [[AUR]].<br />
<br />
In order to use these repositories, add them to {{ic|/etc/pacman.conf}}, as explained in [[pacman#Repositories and mirrors]]. If a repository is signed, you must obtain and locally sign the associated key, as explained in [[pacman/Package signing#Adding unofficial keys]].<br />
<br />
If you want to create your own custom repository, follow [[pacman/Tips and tricks#Custom local repository]].<br />
<br />
{{Warning|The official Arch Linux Developers and the Trusted Users do not perform tests of any sort to verify the contents of these repositories. You must decide whether to trust their maintainers and you take full responsibility for any consequences of using any unofficial repository.}}<br />
<br />
== Adding your repository to this page ==<br />
<br />
If you have your own repository, please add it to this page, so that all the other users will know where to find your packages. Please keep the following rules when adding new repositories:<br />
<br />
* Keep the lists in alphabetical order.<br />
* Include some information about the maintainer: include at least a (nick)name and some form of contact information (web site, email address, user page on ArchWiki or the forums, etc.).<br />
* If the repository is of the ''signed'' variety, please include a key-id, possibly using it as the anchor for a link to its keyserver; if the key is not on a keyserver, include a link to the key file.<br />
* Include some short description (e.g. the category of packages provided in the repository).<br />
* If there is a page (either on ArchWiki or external) containing more information about the repository, include a link to it.<br />
* If possible, avoid using comments in code blocks. The formatted description is much more readable. Users who want some comments in their {{ic|pacman.conf}} can easily create it on their own.<br />
<br />
Some repositories may also have packages for architectures beside x86_64. The {{ic|$arch}} variable will be set automatically by pacman.<br />
<br />
== Signed ==<br />
<br />
=== andontie-aur ===<br />
<br />
* '''Maintainer:''' Holly M.<br />
* '''Description:''' A repo containing the most popular AUR packages, as well as some I use all the time. New packages can be requested on the upstream website.<br />
* '''Key-ID:''' EA50C866329648EE<br />
* '''Upstream page:''' https://aur.andontie.net<br />
<br />
{{bc|<nowiki><br />
[andontie-aur]<br />
Server = https://aur.andontie.net/$arch<br />
</nowiki>}}<br />
<br />
=== arcanisrepo ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#arcanis arcanis]<br />
* '''Description:''' A repository with some AUR packages including packages from VCS<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[arcanisrepo]<br />
Server = https://repo.arcanis.me/repo/$arch<br />
</nowiki>}}<br />
<br />
(It is also available via FTP with the same URL.)<br />
<br />
=== arch4edu ===<br />
<br />
* '''Maintainers:''' [https://github.com/petronny Jingbei Li (petronny)], and [https://github.com/arch4edu/arch4edu/graphs/contributors others]<br />
* '''Description:''' arch4edu is a community repository for Archlinux and ArchlinuxARM that strives to provide the latest versions of most software used by college students.<br />
* '''Git Repo:''' https://github.com/arch4edu/arch4edu<br />
* '''Issue tracking:''' https://github.com/arch4edu/arch4edu/issues for packaging issues, out-of-date notifications, package requests, and related questions<br />
* '''Mirrors:''' https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux<br />
* '''Key-ID:''' 7931B6D628C8D3BA<br />
<br />
{{bc|<nowiki><br />
[arch4edu]<br />
Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch<br />
## or other mirrors in https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux<br />
</nowiki>}}<br />
<br />
=== archlinuxcn ===<br />
<br />
* '''Maintainers:''' [https://plus.google.com/+PhoenixNemo/ Phoenix Nemo (phoenixlzx)], [https://www.archlinux.org/people/developers/#fyan Felix Yan (felixonmars, dev)], [https://twitter.com/lilydjwg lilydjwg], [https://www.archlinux.org/people/trusted-users/#farseerfc farseerfc (TU)], and [https://github.com/archlinuxcn/repo/graphs/contributors others]<br />
* '''Description:''' Packages by the Chinese Arch Linux community, all signed. Be aware that i686 packages are not fully maintained and tested, create an issue if you find some problems.<br />
* '''Git Repo:''' https://github.com/archlinuxcn/repo<br />
* '''Issue tracking:''' https://github.com/archlinuxcn/repo/issues for packaging issues, out-of-date notifications, package requests, and related questions<br />
* '''Mirrors:''' https://github.com/archlinuxcn/mirrorlist-repo (Mostly for users in mainland China), or install ''archlinuxcn-mirrorlist-git'' from the repo.<br />
* '''Key-ID:''' Once the repo is added, ''archlinuxcn-keyring'' package must be installed before any other so you do not get errors about PGP signatures. ''archlinuxcn-keyring'' package itself is signed by TU.<br />
<br />
{{bc|<nowiki><br />
[archlinuxcn]<br />
Server = http://repo.archlinuxcn.org/$arch<br />
## or install archlinuxcn-mirrorlist-git and use the mirrorlist<br />
#Include = /etc/pacman.d/archlinuxcn-mirrorlist<br />
</nowiki>}}<br />
<br />
=== archstrike ===<br />
<br />
* '''Maintainer:''' [https://archstrike.org/team The ArchStrike Team]<br />
* '''Description:''' A repository for security professionals and enthusiasts<br />
* '''Upstream page:''' https://archstrike.org/<br />
* '''Key-ID:''' 9D5F1C051D146843CDA4858BDE64825E7CBC0D51<br />
<br />
{{Note|ArchStrike specific instructions can be found at https://archstrike.org/wiki/setup}}<br />
<br />
{{bc|<nowiki><br />
[archstrike]<br />
Server = https://mirror.archstrike.org/$arch/$repo<br />
</nowiki>}}<br />
<br />
=== archzfs ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/minextu Jan Houben (minextu)]<br />
* '''Description:''' Packages for ZFS on Arch Linux.<br />
* '''Upstream page:''' https://github.com/archzfs/archzfs<br />
* '''Key-ID:''' F75D9D76<br />
<br />
{{bc|<nowiki><br />
[archzfs]<br />
Server = http://archzfs.com/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== archzfs-kernels ===<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/endre/ Endre Szabo]<br />
* '''Description:''' Official kernel packages matching the most recent [[# archzfs|ZFS packages]] kernel version dependencies. Use this to be able to upgrade your kernel package every time whilst using ZFS packages above :)<br />
* '''Upstream page:''' https://end.re/archzfs-kernels/<br />
* '''Key-ID:''' Not needed as packages are from core repos and signed officially.<br />
<br />
{{bc|<nowiki><br />
[archzfs-kernels]<br />
Server = http://end.re/$repo/<br />
</nowiki>}}<br />
<br />
=== ashleyis ===<br />
<br />
* '''Maintainer:''' Ashley Towns ([https://aur.archlinux.org/account/ashleyis/ ashleyis])<br />
* '''Description:''' Debug versions of SDL, chipmunk, libtmx and other misc game libraries. also swift-lang and some other AUR packages <br />
* '''Key-ID:''' B1A4D311<br />
<br />
{{bc|<nowiki><br />
[ashleyis]<br />
Server = http://arch.ashleytowns.id.au/repo/$arch<br />
</nowiki>}}<br />
<br />
=== Bennix Repo ===<br />
<br />
* '''Maintainer:''' Ben P. Dorsi-Todaro ([https://techmeout.org Tech Me Out])<br />
* '''Description:''' Packages [http://ben-dorsi-todaro.com/ Ben P. Dorsi-Todaro] uses and are not listed in repos, or packages built by [http://www.bigbenshosting.com/ Big Ben's Web Hosting] <br />
* '''Key-ID:''' F14BB858F6253DA0<br />
<br />
{{bc|<nowiki><br />
[bigben-repo]<br />
SigLevel = Optional TrustAll<br />
Server = http://bennix.net/bigben-repo/<br />
</nowiki>}}<br />
<br />
=== blackeagle-pre-community ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#idevolder Ike Devolder]<br />
* '''Description:''' testing of the by me maintaned packages before moving to ''community'' repository<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[blackeagle-pre-community]<br />
Server = https://repo.herecura.be/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== chaotic-aur ===<br />
<br />
* '''Maintainer:''' [https://github.com/pedrohlc PedroHLC]<br />
* '''Description:''' Auto builds AUR packages the maintainer uses, update them hourly (a few are daily). Hosted in São Carlos, SP, Brazil. Has a mirror in Germany. x86_64 only. Has over 1400 packages.<br />
* '''Key-ID:''' [http://pool.sks-keyservers.net/pks/lookup?search=0x3056513887B78AEB&fingerprint=on&op=index], fingerprint {{ic|EF92 5EA6 0F33 D0CB 85C4 4AD1 3056 5138 87B7 8AEB }}<br />
* '''Note:''' See [https://lonewolf.pedrohlc.com/chaotic-aur maintainer's notes].<br />
{{bc|<nowiki><br />
[chaotic-aur]<br />
Server = http://lonewolf-builder.duckdns.org/$repo/x86_64<br />
Server = http://chaotic.bangl.de/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== catalyst ===<br />
<br />
* '''Maintainer:''' [[User:Vi0L0|Vi0l0]]<br />
* '''Description:''' ATI Catalyst proprietary drivers.<br />
* '''Key-ID:''' 653C3094<br />
<br />
{{bc|<nowiki><br />
[catalyst]<br />
Server = http://167.86.114.169/arch/catalyst/$arch<br />
</nowiki>}}<br />
<br />
=== catalyst-hd234k ===<br />
<br />
* '''Maintainer:''' [[User:Vi0L0|Vi0l0]]<br />
* '''Description:''' ATI Catalyst proprietary drivers.<br />
* '''Key-ID:''' 653C3094<br />
<br />
{{bc|<nowiki><br />
[catalyst-hd234k]<br />
Server = http://167.86.114.169/arch/catalyst-hd234k/$arch<br />
</nowiki>}}<br />
<br />
=== city ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#bgyorgy Balló György]<br />
* '''Description:''' Experimental/unpopular packages.<br />
* '''Upstream page:''' https://pkgbuild.com/~bgyorgy/city.html<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[city]<br />
Server = https://pkgbuild.com/~bgyorgy/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
=== coderkun-aur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/coderkun/ coderkun]<br />
* '''Description:''' AUR packages with random software. Supporting package deltas and package and database signing.<br />
* '''Upstream page:''' https://www.suruatoel.xyz/arch<br />
* '''Key-ID:''' 39E27199A6BEE374<br />
* '''Keyfile:''' [https://www.suruatoel.xyz/coderkun.asc https://www.suruatoel.xyz/coderkun.asc]<br />
<br />
{{bc|<nowiki><br />
[coderkun-aur]<br />
Server = http://arch.suruatoel.xyz/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== coderkun-aur-audio ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/coderkun/ coderkun]<br />
* '''Description:''' AUR packages with audio-related (realtime kernels, lv2-plugins, …) software. Supporting package deltas and package and database signing.<br />
* '''Upstream page:''' https://www.suruatoel.xyz/arch<br />
* '''Key-ID:''' 39E27199A6BEE374<br />
* '''Keyfile:''' [https://www.suruatoel.xyz/coderkun.key https://www.suruatoel.xyz/coderkun.key]<br />
<br />
{{bc|<nowiki><br />
[coderkun-aur-audio]<br />
Server = http://arch.suruatoel.xyz/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== devkitpro ===<br />
<br />
* '''Maintainer:''' [https://devkitpro.org/ wintermute]<br />
* '''Description:''' Provides Homebrew toolchains for the Nintendo Wii, Gamecube, DS, GBA, Gamepark gp32 and Nintendo Switch<br />
* '''Upstream page:''' https://devkitpro.org/wiki/devkitPro_pacman<br />
* '''Key-ID:''' F7FD5492264BB9D0<br />
<br />
{{Note|Repository has its own additional keyring at https://downloads.devkitpro.org/devkitpro-keyring-r1.787e015-2-any.pkg.tar.xz.}}<br />
<br />
{{bc|<nowiki><br />
[dkp-libs]<br />
Server = https://downloads.devkitpro.org/packages<br />
[dkp-linux]<br />
Server = https://downloads.devkitpro.org/packages/linux<br />
</nowiki>}}<br />
<br />
=== disastrousaur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/TheGoliath TheGoliath]<br />
* '''Description:''' Well known AUR package managers, many of the most popular packages available on the AUR, as well as those that I favor myself<br />
* '''Upstream page:''' https://mirror.repohost.de/disastrousaur<br />
* '''Key-ID:''' CBAE582A876533FD<br />
* '''Keyfile:''' [https://mirror.repohost.de/disastrousaur.key https://mirror.repohost.de/disastrousaur.key]<br />
{{Warning|disastrousaur and disastrousarm have now been merged under the disastrousaur name Please make sure you have changed the Server URL for your repos accordingly. Builds for other architectures may come out as I got enough time getting things running. }}<br />
{{bc|<nowiki><br />
[disastrousaur]<br />
Server = https://mirror.repohost.de/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== dvzrv ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#dvzrv David Runge]<br />
* '''Description:''' [[Realtime kernel patchset]] (aka. {{AUR|linux-rt}} and {{AUR|linux-rt-lts}})<br />
* '''Key-ID:''' Not needed, as maintainer is a developer/TU<br />
<br />
{{bc|<nowiki><br />
[dvzrv]<br />
Server = https://pkgbuild.com/~dvzrv/repo/$arch<br />
</nowiki>}}<br />
<br />
=== ear ===<br />
<br />
* '''Maintainer:''' [https://wardsegers.be Ward Segers], <br />
* '''Description:''' Editicalu's ArchLinux Repository. Contains precompiled AUR packages (mostly the ones maintained by editicalu)<br />
* '''Homepage:''' https://ear.wardsegers.be/<br />
* '''Upstream page:''' https://gitlab.com/editicalu/ear<br />
* '''Keyfile:''' https://ear.wardsegers.be/signingkey.asc<br />
* '''Key-ID:''' A9C4E7734638ACF8<br />
<br />
{{Note|Instructions can be found at https://ear.wardsegers.be}}<br />
<br />
{{bc|<nowiki><br />
[ear]<br />
Server = https://ear.wardsegers.be/$arch<br />
</nowiki>}}<br />
<br />
=== eatabrick ===<br />
<br />
* '''Maintainer:''' bentglasstube<br />
* '''Description:''' Packages for software written by (and a few just compiled by) bentglasstube.<br />
<br />
{{bc|<nowiki><br />
[eatabrick]<br />
Server = http://repo.eatabrick.org/$arch<br />
</nowiki>}}<br />
<br />
=== eschwartz ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#eschwartz Eli Schwartz]<br />
* '''Description:''' Personal repo with AUR packages and some core packages from git (including glibc and pacman). Contains debug packages.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[eschwartz]<br />
Server = https://pkgbuild.com/~eschwartz/repo/$arch<br />
</nowiki>}}<br />
<br />
=== ffy00 ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#FFY00 Filipe Laíns]<br />
* '''Description:''' Personal repo. Contains some packages related to the D language.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[ffy00]<br />
Server = https://pkgbuild.com/~ffy00/repo<br />
</nowiki>}}<br />
<br />
=== fusion809 ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/fusion809|Brenton Horne]] (brentonhorne77 at gmail dot com).<br />
* '''Description:''' Provides a few AUR and other packages I like. Like CodeLite and bleeding-edge (latest release within 1 day of its release) GVim (GTK 2 interface).<br />
* '''Package list:''' http://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/x86_64/<br />
* '''Key-ID:''' 03264DDCD606DC98<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/x86_64/home_fusion809_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_fusion809_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/fusion809/Arch_Extra/$arch<br />
</nowiki>}}<br />
<br />
=== grawlinson ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/grawlinson George Rawlinson]<br />
* '''Description:''' AUR packages maintained by the user as well as some experimental packages.<br />
* '''Package list:''' https://repo.nullpointer.io<br />
* '''Key-ID:''' 25ea6900d9ea5ebc<br />
* '''Keyfile:''' https://nullpointer.io/grawlinson.key<br />
<br />
{{bc|<nowiki><br />
[grawlinson]<br />
Server = https://repo.nullpointer.io<br />
</nowiki>}}<br />
<br />
=== gnome-devel ===<br />
<br />
* '''Maintainer:''' [https://plus.google.com/+AndresFernandezperonista Andres Fernandez], [https://plus.google.com/+FernandoFernandezBerel Fernando Fernandez]<br />
* '''Description:''' GNOME development releases. For testing purposes only.<br />
* '''Package list:''' https://softwareperonista.com.ar/repo/archlinux/gnome-devel/x86_64/<br />
* '''Key-ID:''' DDCE9FD63370080B<br />
<br />
{{Note|Must be put above {{ic|[testing]}} repository.}}<br />
<br />
{{bc|<nowiki><br />
[gnome-devel]<br />
Server = https://softwareperonista.com.ar/repo/archlinux/gnome-devel/$arch<br />
</nowiki>}}<br />
<br />
=== herecura ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#idevolder Ike Devolder]<br />
* '''Description:''' additional packages not found in the ''community'' repository<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[herecura]<br />
Server = https://repo.herecura.be/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== holo ===<br />
<br />
* '''Maintainer:''' Stefan Majewsky <holo-pacman@posteo.de> (please prefer to report issues at [https://github.com/majewsky/holo-pacman-repo/issues Github])<br />
* '''Description:''' Packages for [https://holocm.org Holo configuration management], including compatible plugins and tools.<br />
* '''Upstream page:''' https://github.com/majewsky/holo-pacman-repo<br />
* '''Package list:''' https://repo.holocm.org/archlinux/x86_64<br />
* '''Key-ID:''' 0xF7A9C9DC4631BD1A<br />
<br />
{{bc|<nowiki><br />
[holo]<br />
Server = https://repo.holocm.org/archlinux/x86_64<br />
</nowiki>}}<br />
<br />
=== ivasilev ===<br />
<br />
* '''Maintainer:''' [https://ivasilev.net Ianis G. Vasilev]<br />
* '''Description:''' A variety of packages, mostly my own software and AUR builds.<br />
* '''Upstream page:''' https://ivasilev.net/pacman<br />
* '''Key-ID:''' [https://pgp.mit.edu/pks/lookup?op=vindex&search=0xB77A3C8832838F1F80ADFD7E1D0507B417DAB671 17DAB671]<br />
<br />
{{bc|<nowiki><br />
[ivasilev]<br />
Server = https://ivasilev.net/pacman/$arch<br />
</nowiki>}}<br />
<br />
=== jlk ===<br />
<br />
* '''Maintainer:''' [[User:Lahwaacz|Jakub Klinkovský]]<br />
* '''Description:''' Various packages from the ABS and AUR. Modified packages are in the {{ic|modified}} group.<br />
* '''Upstream page:''' https://jlk.fjfi.cvut.cz/arch/repo/README.html<br />
* '''Key-ID:''' 932BA3FA0C86812A32D1F54DAB5964AEB9FEDDDC<br />
<br />
{{bc|<nowiki><br />
[jlk]<br />
Server = https://jlk.fjfi.cvut.cz/arch/repo<br />
</nowiki>}}<br />
<br />
=== llvm-svn ===<br />
<br />
* '''Maintainer:''' [[User:Kerberizer|Luchesar V. ILIEV (kerberizer)]]<br />
* '''Description:''' [https://aur.archlinux.org/pkgbase/llvm-svn llvm-svn] and [https://aur.archlinux.org/pkgbase/lib32-llvm-svn lib32-llvm-svn] from AUR: the LLVM compiler infrastructure, the Clang frontend, and the tools associated with it<br />
* '''Key-ID:''' [https://sks-keyservers.net/pks/lookup?op=vindex&search=0x76563F75679E4525&fingerprint=on&exact=on 0x76563F75679E4525], fingerprint {{ic|D16C F22D 27D1 091A 841C 4BE9 7656 3F75 679E 4525}}<br />
<br />
{{bc|<nowiki><br />
[llvm-svn]<br />
Server = https://repos.uni-plovdiv.net/archlinux/$repo/$arch<br />
</nowiki>}}<br />
<br />
<br />
=== markzz ===<br />
<br />
* '''Maintainer:''' [[User:Markzz|Mark Weiman (markzz)]]<br />
* '''Description:''' Packages that markzz maintains or uses on the AUR; this includes Linux with the vfio patchset ({{AUR|linux-vfio}} and {{AUR|linux-vfio-lts}}), and packages for analysis of network data.<br />
* '''Key ID:''' DEBB9EE4<br />
<br />
{{Note|If you want to add the key by installing the ''markzz-keyring'' package, temporarily add {{ic|1=SigLevel = Never}} into the repository section.}}<br />
<br />
{{bc|<nowiki><br />
[markzz]<br />
Server = https://repo.markzz.com/arch/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== maximbaz ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#maximbaz Maxim Baz]<br />
* '''Description:''' Personal repo with AUR packages.<br />
* '''Key-ID:''' Not needed, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[maximbaz]<br />
Server = https://pkgbuild.com/~maximbaz/repo/<br />
</nowiki>}}<br />
<br />
=== me176c ===<br />
<br />
* '''Maintainer:''' [https://github.com/lambdadroid lambdadroid]<br />
* '''Description:''' Packages for [[ASUS MeMO Pad 7 (ME176C(X))]]<br />
* '''Key-ID:''' 2B1138A8BB59D786A3BF42AAD996DA70572407FB<br />
<br />
{{bc|<nowiki><br />
[me176c]<br />
Server = https://me176c.uber.space/archlinux<br />
</nowiki>}}<br />
<br />
=== miffe ===<br />
<br />
* '''Maintainer:''' [https://bbs.archlinux.org/profile.php?id=4059 miffe]<br />
* '''Description:''' AUR packages maintained by miffe, e.g. linux-mainline<br />
* '''Key ID:''' 313F5ABD<br />
<br />
{{bc|<nowiki><br />
[miffe]<br />
Server = https://arch.miffe.org/$arch/<br />
</nowiki>}}<br />
<br />
=== mikelpint ===<br />
<br />
* '''Maintainer:''' [[User:Mikelpint|Mikel Pintado (Mikelpint)]]<br />
* '''Description:''' Packages that mikelpint maintains in the AUR.<br />
* '''Key ID:''' 5CA78FC65B189E2B<br />
<br />
{{bc|<nowiki><br />
[mikelpint]<br />
Server = https://mikelpint.github.io/repository/archlinux/repo<br />
</nowiki>}}<br />
<br />
=== Minerva W Science ===<br />
<br />
* '''Maintainer:''' Minerva W<br />
* '''Description:''' [[OpenFOAM]] packages.<br />
* '''Key-ID:''' 3FF21B78117507DA<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/Minerva_W:/Science/Arch_Extra/x86_64/home_Minerva_W_Science_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_Minerva_W_Science_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/Minerva_W:/Science/Arch_Extra/$arch <br />
</nowiki>}}<br />
<br />
=== mobile ===<br />
<br />
* '''Maintainer:''' [https://keybase.io/farwayer farwayer]<br />
* '''Description:''' React Native and Android development<br />
* '''Upstream page:''' https://keybase.pub/farwayer/arch/mobile/<br />
* '''Key ID:''' 7943315502A936D7<br />
<br />
{{bc|<nowiki><br />
[mobile]<br />
Server = https://farwayer.keybase.pub/arch/$repo<br />
</nowiki>}}<br />
<br />
=== nah ===<br />
<br />
* '''Maintainer:''' [https://yeah.nah.nz phillid]<br />
* '''Description:''' Pre-built versions of the (slow-to-build) graph-tool python libraries, mingw-w64<br />
* '''Key ID:''' 7BF3D17D0884BF5B<br />
<br />
{{bc|<nowiki><br />
[nah]<br />
Server = https://repo.nah.nz/$repo<br />
</nowiki>}}<br />
<br />
=== nickcao ===<br />
<br />
* '''Maintainer:''' [https://nichi.co/about NickCao]<br />
* '''Description:''' Some (useful for some) packages from me, and some aur packages I personally use.<br />
* '''Key-ID:''' 09CC69622E8D4EE343B4E8954D0BA456DF028C15<br />
<br />
{{bc|<nowiki><br />
[nickcao]<br />
Server = https://repo.nichi.co/$arch<br />
</nowiki>}}<br />
<br />
=== origincode ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/OriginCode OriginCode]<br />
* '''Description:''' A few staging or testing packages from [[#archlinuxcn]], and some daily use packages.<br />
* '''Key-ID:''' 0A5BAD445D80C1CC & 62BF97502AE10D22<br />
<br />
{{bc|<nowiki><br />
[origincode]<br />
Server = https://repo.origincode.me/repo/$arch<br />
</nowiki>}}<br />
<br />
=== pkgbuilder ===<br />
<br />
* '''Maintainer:''' [https://chriswarrick.com/ Chris Warrick]<br />
* '''Description:''' A repository for PKGBUILDer, a Python AUR helper.<br />
* '''Upstream page:''' https://github.com/Kwpolska/pkgbuilder<br />
* '''Key-ID:''' 5EAAEA16<br />
<br />
{{bc|<nowiki><br />
[pkgbuilder]<br />
Server = https://pkgbuilder-repo.chriswarrick.com/<br />
</nowiki>}}<br />
<br />
=== post-factum kernels ===<br />
<br />
* '''Maintainer''': [https://aur.archlinux.org/account/post-factum Oleksandr Natalenko aka post-factum]<br />
* '''Upstream page''': https://gitlab.com/post-factum/pf-kernel/wikis/README<br />
* '''Description''': [[Kernel#Major_patchsets|pf-kernel]] packages by its developer, post-factum<br />
* '''Key-ID:''': 95C357D2AF5DA89D<br />
* '''Keyfile''': https://download.opensuse.org/repositories/home:/post-factum:/kernels/Arch/x86_64/home_post-factum_kernels_Arch.key<br />
<br />
{{bc|<nowiki><br />
[home_post-factum_kernels_Arch]<br />
Server = https://download.opensuse.org/repositories/home:/post-factum:/kernels/Arch/$arch<br />
</nowiki>}}<br />
<br />
=== QOwnNotes ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/pbek Patrizio Bekerle] (pbek), QOwnNotes author<br />
* '''Description:''' QOwnNotes is a open source notepad and todo list manager with markdown support and [[ownCloud]] integration.<br />
* '''Key-ID:''' FFC43FC94539B8B0<br />
* '''Keyfile:''' https://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Arch_Extra/x86_64/home_pbek_QOwnNotes_Arch_Extra.key<br />
<br />
{{bc|<nowiki><br />
[home_pbek_QOwnNotes_Arch_Extra]<br />
Server = https://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Arch_Extra/$arch<br />
</nowiki>}}<br />
<br />
=== qt-debug ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/The-Compiler The Compiler]<br />
* '''Description:''' Qt/PyQt builds with debug symbols<br />
* '''Upstream page:''' https://github.com/qutebrowser/qt-debug-pkgbuild<br />
* '''Key-ID:''' D6A1C70FE80A0C82<br />
<br />
{{bc|<nowiki><br />
[qt-debug]<br />
Server = https://qutebrowser.org/qt-debug/$arch<br />
</nowiki>}}<br />
<br />
=== quarry ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#anatolik anatolik]<br />
* '''Description:''' Arch binary repository for [http://rubygems.org/ Rubygems] packages. See [https://bbs.archlinux.org/viewtopic.php?id=182729 forum announcement] for more information.<br />
* '''Sources:''' https://github.com/anatol/quarry<br />
* '''Key-ID:''' Not needed, as maintainer is a developer<br />
<br />
{{bc|<nowiki><br />
[quarry]<br />
Server = https://pkgbuild.com/~anatolik/quarry/x86_64/<br />
</nowiki>}}<br />
<br />
=== repo-ck ===<br />
<br />
Kernel and modules with Brain Fuck Scheduler and all the goodies in the ck1 patch set.<br />
<br />
See [[/Repo-ck]].<br />
<br />
=== seblu ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#seblu Sébastien Luttringer]<br />
* '''Description:''' All seblu useful pre-built packages, some homemade (linux-seblu-meta, zfs-dkms, spotify, masterpdfeditor, etc).<br />
* '''Key-ID:''' Not required, as maintainer is a Developer<br />
<br />
{{bc|<nowiki><br />
[seblu]<br />
Server = https://al1.seblu.net/$repo/$arch<br />
Server = https://al2.seblu.net/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== seiichiro ===<br />
<br />
* '''Maintainer:''' [https://www.seiichiro0185.org Stefan Brand (seiichiro0185)]<br />
* '''Description:''' AUR-packages I use frequently<br />
* '''Key-ID:''' 805517CC<br />
<br />
{{bc|<nowiki><br />
[seiichiro]<br />
Server = https://www.seiichiro0185.org/repo/$arch<br />
</nowiki>}}<br />
<br />
=== selinux ===<br />
<br />
* '''Maintainer:''' [https://github.com/swordfeng swordfeng]<br />
* '''Description:''' Unofficial (personal) builds for [[SELinux]] packages. PKGBUILDs are taken from AUR instead of the upstream GitHub repo.<br />
* '''Upstream page:''' https://github.com/archlinuxhardened/selinux<br />
* '''Key-ID:''' 7691FA63FE91CAFDD42A4AF08323B00E97DF0E6D (subkey B988167F59A3AF8368D55D65A7862FD48B72D83B is specifically used for signing packages)<br />
* '''Keyfile:''' https://repo.taiho.moe/key.asc<br />
<br />
{{bc|<nowiki><br />
[selinux]<br />
Server = https://repo.taiho.moe/$repo<br />
</nowiki>}}<br />
<br />
=== sergej-repo ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#spupykin Sergej Pupykin]<br />
* '''Description:''' psi-plus, owncloud-git, ziproxy, android, MySQL, and other stuff. Some packages also available for armv7h.<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[sergej-repo]<br />
Server = http://repo.p5n.pp.ru/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
=== siosm-aur ===<br />
<br />
* '''Maintainer:''' [https://tim.siosm.fr/about/ Timothee Ravier]<br />
* '''Description:''' packages also available in the Arch User Repository, sometimes with minor fixes<br />
* '''Upstream page:''' https://tim.siosm.fr/repositories/<br />
* '''Key-ID:''' 78688F83<br />
<br />
{{bc|<nowiki><br />
[siosm-aur]<br />
Server = http://siosm.fr/repo/$repo/<br />
</nowiki>}}<br />
<br />
=== sublime-text ===<br />
<br />
* '''Maintainer:''' Sublime Text developer<br />
* '''Description:''' Sublime Text editor packages from developer's repository<br />
* '''Upstream page:''' https://www.sublimetext.com/docs/3/linux_repositories.html#pacman<br />
* '''Key-ID:''' 8A8F901A<br />
<br />
{{bc|<nowiki><br />
[sublime-text]<br />
Server = https://download.sublimetext.com/arch/stable/x86_64<br />
</nowiki>}}<br />
<br />
=== subtitlecomposer ===<br />
<br />
* '''Maintainer:''' Mladen Milinkovic (maxrd2)<br />
* '''Description:''' Subtitle Composer stable and nightly builds<br />
* '''Upstream page:''' https://github.com/maxrd2/subtitlecomposer<br />
* '''Key-ID:''' EF9D9B26<br />
<br />
{{bc|<nowiki><br />
[subtitlecomposer]<br />
Server = https://smoothware.net/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== trinity ===<br />
<br />
* '''Maintainer:''' Michael J. Manley <mmanley@ntge.net><br />
* '''Description:''' [[Trinity]] Desktop Environment<br />
* '''Key-ID:''' 5F710C1E<br />
<br />
{{bc|<nowiki><br />
[trinity]<br />
Server = https://repo.nasutek.com/arch/contrib/trinity/x86_64<br />
</nowiki>}}<br />
<br />
=== valveaur ===<br />
<br />
* '''Maintainer:''' John Schoenick <johns@valvesoftware.com> (https://valvesoftware.com)<br />
* '''Description:''' A repository by Valve Software Providing The Linux-fsync kernel and modules, including the futex-wait-multiple patchset for testing with Proton fsync & Mesa with the ACO compiler patchset. <br />
* '''Upstream page:''' https://steamcommunity.com/linux<br />
* '''Key-ID:''' 8DC2CE3A3D245E64<br />
<br />
{{bc|<nowiki><br />
[valveaur]<br />
Server = http://repo.steampowered.com/arch/valveaur<br />
</nowiki>}}<br />
<br />
=== xuanrui ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/xuanruiqi Xuanrui Qi (xuanruiqi)]<br />
* '''Description:''' xuanruiqi's own packages and frequently-used packages, mainly of interest to functional programmers.<br />
* '''Upstream Page:''' https://www.xuanruiqi.com/linux.html<br />
* '''Key-ID:''' 6E06FBC8<br />
<br />
{{bc|<nowiki><br />
[xuanrui]<br />
Server = https://arch.xuanruiqi.com/repo<br />
</nowiki>}}<br />
<br />
=== xyne-x86_64 ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#xyne Xyne]<br />
* '''Description:''' A repository for Xyne's own projects.<br />
* '''Upstream page:''' http://xyne.archlinux.ca/projects/<br />
* '''Key-ID:''' Not required, as maintainer is a TU<br />
<br />
{{bc|<nowiki><br />
[xyne-x86_64]<br />
# Server = https://xyne.archlinux.ca/repos/xyne # It returns error 404 or 406 (varying). Use the line below:<br />
Server = http://xyne.archlinux.ca/bin/repo.php?file=<br />
</nowiki>}}<br />
<br />
=== home-thaodan ===<br />
<br />
* '''Maintainer''': [https://aur.archlinux.org/account/Thaodan Thaodan]<br />
* '''Upstream page''': https://gitlab.com/Thaodan/linux-pf<br />
* '''Description''': [[Kernel#Major_patchsets|pf-kernel]] and other packages by pf-kernel fork developer, Thaodan<br />
* '''Gitlab Project''': https://gitlab.com/Thaodan/repo-home-thaodan-repo<br />
* '''Key-ID:''': BBFE2FD421597395E4FC8C8DF6C85FEE79D661A4<br />
<br />
{{bc|<nowiki><br />
[home-thaodan]<br />
Server = https://thaodan.de/public/archlinux/home-thaodan/$arch<br />
</nowiki>}}<br />
<br />
== Unsigned ==<br />
<br />
{{Note|Users will need to add the following to these entries: {{ic|1=SigLevel = PackageOptional}}}}<br />
<br />
=== alucryd ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Various packages Maxime Gauduin maintains (or not) in the AUR.<br />
<br />
{{bc|<nowiki><br />
[alucryd]<br />
Server = https://pkgbuild.com/~alucryd/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== alucryd-multilib ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Various packages needed to run Steam without its runtime environment.<br />
<br />
{{bc|<nowiki><br />
[alucryd-multilib]<br />
Server = https://pkgbuild.com/~alucryd/$repo/x86_64<br />
</nowiki>}}<br />
<br />
=== andrwe ===<br />
<br />
* '''Maintainer:''' Andrwe Lord Weber<br />
* '''Description:''' contains programs I'm using on many systems<br />
* '''Upstream page:''' http://andrwe.org/linux/repository<br />
<br />
{{bc|<nowiki><br />
[andrwe]<br />
Server = http://repo.andrwe.org/$arch<br />
</nowiki>}}<br />
<br />
=== archgeotux ===<br />
<br />
* '''Maintainer:''' Samuel Mesa<br />
* '''Description:''' Geospatial and geographic information system applications<br />
* '''Upstream page:''' https://archgeotux.sourceforge.io/<br />
<br />
{{bc|<nowiki><br />
[archgeotux]<br />
Server = https://downloads.sourceforge.net/project/archgeotux/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxfr ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:'''<br />
* '''Upstream page:''' http://afur.archlinux.fr<br />
<br />
{{bc|<nowiki><br />
[archlinuxfr]<br />
Server = http://repo.archlinux.fr/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxgr ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:''' many interesting packages provided by the Hellenic (Greek) Arch Linux community<br />
<br />
{{bc|<nowiki><br />
[archlinuxgr]<br />
Server = http://archlinuxgr.tiven.org/archlinux/$arch<br />
</nowiki>}}<br />
<br />
=== archlinuxgr-kde4 ===<br />
<br />
* '''Maintainer:'''<br />
* '''Description:''' KDE4 packages (plasmoids, themes etc) provided by the Hellenic (Greek) Arch Linux community<br />
<br />
{{bc|<nowiki><br />
[archlinuxgr-kde4]<br />
Server = http://archlinuxgr.tiven.org/archlinux-kde4/$arch<br />
</nowiki>}}<br />
<br />
=== aur-av-bin ===<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/milk/ milkii] (ping me on Freenode)<br />
* '''Description:''' Precompiled Arch Linux binary packages of mostly A/V related software from the AUR.<br />
* '''Upstream page:''' https://github.com/mxmilkb/aur-av-bin<br />
<br />
{{bc|<nowiki><br />
[aur-av-bin]<br />
SigLevel = PackageOptional<br />
Server = https://github.com/mxmilkb/aur-av-bin/releases/download/repository<br />
</nowiki>}}<br />
<br />
=== craftdestiny ===<br />
{{Out of date|Neither the maintainer's website nor the repo work.|section=craftdestiny}}<br />
<br />
* '''Maintainer:''' [https://craftdestiny.ovh LinuxVieLoisir]<br />
* '''Description:''' A Craft Destiny repository is there to avoid long compilation on some software. It also adds some very useful additional software.<br />
<br />
{{bc|<nowiki><br />
[craftdestiny]<br />
Server = https://miroir.craftdestiny.ovh/archlinux-repo/<br />
</nowiki>}}<br />
<br />
=== dx37essentials ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/DragonX256 DragonX256]<br />
* '''Description:''' Personal repository. Contains packages from AUR, which I using every day.<br />
* '''Git repo:''' https://gitlab.com/DX37/dx37essentials<br />
* '''Upstream page:''' https://dx37.gitlab.io/dx37essentials<br />
<br />
{{bc|<nowiki><br />
[dx37essentials]<br />
Server = https://dx37.gitlab.io/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== heftig ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/developers/#heftig Jan Steffens]<br />
* '''Description:''' Includes pulseaudio-git, pavucontrol-git, and firefox-developer-edition<br />
* '''Upstream page:''' https://bbs.archlinux.org/viewtopic.php?id=117157<br />
<br />
{{bc|<nowiki><br />
[heftig]<br />
Server = https://pkgbuild.com/~heftig/repo/$arch<br />
</nowiki>}}<br />
<br />
=== jkanetwork ===<br />
<br />
* '''Maintainer:''' kprkpr <kevin01010 at gmail dot com><br />
* '''Maintainer:''' Joselucross <jlgarrido97 at gmail dot com><br />
* '''Description:''' Packages of AUR like pimagizer,stepmania,yaourt,linux-mainline,wps-office,grub-customizer,some IDE.. Open for all that wants to contribute<br />
* '''Upstream page:''' http://repo.jkanetwork.com/<br />
<br />
{{bc|<nowiki><br />
[jkanetwork]<br />
Server = http://repo.jkanetwork.com/repo/$repo/<br />
</nowiki>}}<br />
<br />
=== kodi-devel-prebuilt ===<br />
<br />
* '''Maintainer:''' asm0dey <pavel.finkelshtein+AUR@gmail.com><br />
* '''Description:''' Prebuilt packages of kodi-devel from AUR<br />
* '''Upstream page:''' {{AUR|kodi-devel}}<br />
<br />
{{bc|<nowiki><br />
[kodi-devel-prebuilt]<br />
Server = https://asm0dey.github.io/$repo/$arch<br />
SigLevel = PackageOptional<br />
</nowiki>}}<br />
<br />
=== mesa-git ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#lcarlier Laurent Carlier]<br />
* '''Description:''' Mesa git builds for the ''testing'' and ''multilib-testing'' repositories<br />
<br />
{{bc|<nowiki><br />
[mesa-git]<br />
Server = https://pkgbuild.com/~lcarlier/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== Mountain ===<br />
{{Out of date|Neither the Github site nor the maintainer's Wordpress site exist|section=Mountain}}<br />
<br />
* '''Maintainer:''' [https://mountainlinux.wordpress.com Minzord]<br />
* '''Description:''' Popular AUR Packages and some Driver Wifi. <br />
<br />
{{bc|<nowiki><br />
[Mountain]<br />
SigLevel = Never<br />
Server = https://mountain-linux.github.io/Mountain/$arch<br />
</nowiki>}}<br />
<br />
=== oracle ===<br />
<br />
* '''Maintainer:''' [[User:Malvineous]]<br />
* '''Description:''' [[Oracle Database client]] and associated tools, built from AUR packages and hosted on AWS S3 using [https://github.com/Malvineous/archlinux-pacman-repo Makefile scripts].<br />
* '''Conditions:''' By using this repository you agree to the [http://www.oracle.com/technetwork/licenses/instant-client-lic-152016.html Oracle Technology Network Development and Distribution License Terms for Instant Client].<br />
{{bc|<nowiki><br />
[oracle]<br />
Server = http://linux.shikadi.net/arch/$repo/$arch/<br />
</nowiki>}}<br />
<br />
=== ownstuff ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/Martchus Martchus]<br />
* '''Description:''' A lot of packages from the AUR, e.g. a great number packages for mingw-w64 and Android cross compilation, fonts, Perl modules, tools like {{AUR|tageditor}}, {{AUR|syncthingtray}}, {{AUR|subtitlecomposer}} and {{AUR|qmplay2}}<br />
* '''Upstream page''': https://github.com/Martchus/PKGBUILDs (sources beside the AUR) and https://martchus.no-ip.biz/repoindex (package browser/search)<br />
<br />
{{bc|<nowiki><br />
[ownstuff-testing]<br />
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch<br />
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch<br />
<br />
[ownstuff]<br />
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch<br />
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch<br />
</nowiki>}}<br />
<br />
{{Note|The testing repository is supposed to be used together with the official testing repositories.}}<br />
<br />
=== pantheon ===<br />
<br />
* '''Maintainer:''' [https://www.archlinux.org/people/trusted-users/#alucryd Maxime Gauduin]<br />
* '''Description:''' Repository containing Pantheon-related packages<br />
<br />
{{bc|<nowiki><br />
[pantheon]<br />
Server = https://pkgbuild.com/~alucryd/$repo/$arch<br />
</nowiki>}}<br />
<br />
=== pietma ===<br />
<br />
* '''Maintainer:''' MartiMcFly <martimcfly@autorisation.de><br />
* '''Description:''' Arch User Repository packages [https://aur.archlinux.org/packages/?K=martimcfly&SeB=m I create or maintain.].<br />
* '''Upstream page:''' http://pietma.com/tag/aur/<br />
<br />
{{bc|<nowiki><br />
[pietma]<br />
Server = http://repository.pietma.com/nexus/content/repositories/archlinux/$arch/$repo<br />
</nowiki>}}<br />
<br />
=== pnsft-pur ===<br />
<br />
* '''Maintainer:''' [https://aur.archlinux.org/account/ponsfoot ponsfoot]<br />
* '''Description:''' Japanese input method packages Mozc (vanilla) and libkkc<br />
<br />
{{bc|<nowiki><br />
[pnsft-pur]<br />
Server = https://osdn.net/projects/ponsfoot-aur/storage/pur/x86_64/<br />
</nowiki>}}<br />
<br />
=== titanium ===<br />
<br />
* '''Maintainer:''' Pyrerune <pyrerune@gmail.com><br />
* '''Description:''' Repository containing software I develop.<br />
{{bc|<nowiki><br />
[titanium]<br />
Server = https://pyrerune.github.io/titanium/$arch<br />
</nowiki>}}<br />
<br />
=== userrepository ===<br />
<br />
* '''Maintainer:''' [https://twitter.com/brunomiguel Bruno Miguel] <brunoalexandremiguel@gmail.com><br />
* '''Description:''' Repository containing software from AUR<br />
{{bc|<nowiki><br />
[userrepository]<br />
Server = https://userrepository.eu<br />
</nowiki>}}</div>Milkhttps://wiki.archlinux.org/index.php?title=Tiny_Tiny_RSS&diff=568450Tiny Tiny RSS2019-03-12T00:04:24Z<p>Milk: add required steps</p>
<hr />
<div>[[Category:News aggregators]]<br />
[[Category:Web applications]]<br />
[[es:TT-RSS]]<br />
[[ja:TT-RSS]]<br />
[https://tt-rss.org/ Tiny Tiny RSS] is an open source web-based news feed (RSS/Atom) aggregator, designed to allow you to read news from any location, while feeling as close to a real desktop application as possible.<br />
<br />
==Installation==<br />
Install {{pkg|tt-rss}} from the [[official repositories]].<br />
<br />
If you plan on using PostgreSQL, install {{pkg|php-pgsql}}<br />
<br />
tt-rss is installed into {{ic|/usr/share/webapps/tt-rss/}}; you'll need to make this directory available from your web server. The simplest way is to do :<br />
<br />
* With [[Apache HTTP Server]] :<br />
: {{bc|# ln -s /usr/share/webapps/tt-rss /srv/http/tt-rss}}<br />
<br />
* With [[Nginx]] :<br />
: {{bc|# ln -s /usr/share/webapps/tt-rss /usr/share/nginx/html/tt-rss}}<br />
<br />
You will need to recursively chown {ic|/usr/share/webapps/tt-rss}} to http:http.<br />
<br />
===Set up php and database===<br />
You'll need to set up a database, either [[MySQL]] or [[PostgreSQL]].<br />
<br />
Create a ttrss user and database, e.g. with mysql:<br />
<br />
$ mysql -p -u root<br />
mysql> CREATE USER 'ttrss'@'localhost' IDENTIFIED BY 'somepassword';<br />
mysql> CREATE DATABASE ttrss;<br />
mysql> GRANT ALL PRIVILEGES ON ttrss.* TO "ttrss"@"localhost" IDENTIFIED BY 'somepassword';<br />
<br />
Or create a ttrss user and database in PostgreSQL, e.g.:<br />
<br />
[postgres]$ createuser -P --interactive<br />
[postgres]$ createdb -U ttrss ttrss<br />
<br />
In {{ic|/etc/php/php.ini}}, enable the following modules:<br />
<br />
extension=curl<br />
extension=iconv<br />
extension=mysqli # for MySQL<br />
extension=pdo_mysql # for MySQL<br />
extension=pdo_pgsql # for PostgreSQL<br />
extension=pgsql # for legacy PostgreSQL plugins (still required by default)<br />
extension=soap<br />
<br />
''If'' {{ic|open_basedir}} is set in {{ic|/etc/php/php.ini}} (it isn't by default), add {{ic|/var/lib/tt-rss:/usr/share/webapps/tt-rss:/etc/webapps/tt-rss}} to it.<br />
<br />
Application initialization can be done either automatically or manually.<br />
<br />
Automatic way:<br />
* remove default config file {{ic|/etc/webapps/tt-rss/config.php}}, without this file tt-rss webapp enters installation wizard.<br />
* navigate to (your-servers-root)/tt-rss/ and proceed with the installer.<br />
* save generated config file to {{ic|/etc/webapps/tt-rss/config.php}}.<br />
<br />
Manual way:<br />
* edit tt-rss config file{{ic|/etc/webapps/tt-rss/config.php}} and update database settings.<br />
* re-create database from {{ic|/usr/share/webapps/tt-rss/schema/ttrss_schema_TYPE.sql}}. With MySQL run:<br />
$ mysql --user ttrss --password=<PASSWORD> ttrss < /usr/share/webapps/tt-rss/schema/ttrss_schema_mysql.sql<br />
<br />
With PostgreSQL run:<br />
$ psql ttrss -U ttrss -f /usr/share/webapps/tt-rss/schema/ttrss_schema_pgsql.sql<br />
<br />
===Pacman hook===<br />
To do tt-rss database upgrades automatically you may set up pacman post upgrade hook based on following example:<br />
<br />
[Trigger]<br />
Operation = Install<br />
Operation = Upgrade<br />
Type = Package<br />
Target = tt-rss<br />
<br />
[Action]<br />
Description = Updating TT-RSS Database<br />
When = PostTransaction<br />
Exec = /usr/bin/runuser -u http -- /usr/bin/php /usr/share/webapps/tt-rss/update.php --update-schema<br />
<br />
You need to put it into /etc/pacman.d/hooks/tt-rss.hook if you did not customize HookDir in pacman.conf.<br />
<br />
See also [[Pacman#Hooks]]<br />
<br />
===Set up an update daemon===<br />
See https://tt-rss.org/gitlab/fox/tt-rss/wikis/UpdatingFeeds – but you should be able to simply<br />
<br />
# systemctl enable tt-rss<br />
<br />
Do <br />
<br />
$ systemctl status tt-rss<br />
<br />
to check that it's running fine.</div>Milkhttps://wiki.archlinux.org/index.php?title=Talk:Tiny_Tiny_RSS&diff=568423Talk:Tiny Tiny RSS2019-03-11T17:13:50Z<p>Milk: /* process described is lacking */ new section</p>
<hr />
<div>=== Apache does not restart ===<br />
I cannot restart apache after using a custom php.ini. The error is because of this step:<br />
<br />
- Then add to your apache config:<br />
<br />
<Location /tt-rss/><br />
PHPINIDir /etc/webapps/tt-rss <br />
</Location><br />
<br />
<br />
The error is:<br />
apachectl[24199]: Syntax error on line 536 of /etc/httpd/conf/httpd.conf:<br />
apachectl[24199]: PHPINIDir not allowed here<br />
<br />
I also read, that you cannot have more than one PHPINIDir. If you get it to work in your case (using a custom php.ini, as I cannot set open_basedir to none) I would like to know, how you did it.<br />
<br />
Thx,([[User:Watnuss|Watnuss]] ([[User talk:Watnuss|talk]]) 09:10, 7 May 2013 (UTC))<br />
<br />
<br />
=== TT-RSS not working for me ===<br />
First it was complaining that i didn't 'configure' it. I 'fixed' that by removing the symlink from /usr/share/webapps/tt-rss/config.php and putting the /etc/webapps/tt-rss/config.php file there.<br />
But now it's still complaining that cache/images, cache/upload, cache/export etc eetc are not writeable. I see those are also symlinks so I seem to have a problem with symlinks in general then?<br />
How is this supposed to work? Is it supposed to work with lighttpd?<br />
<br />
<br />
ok it works now... i have setup the php basedir correctly (adding /usr/share/webapps/tt-rss, /var/lib/tt-rss and /etc/webapps/tt-rss) after that everything immediately worked.<br />
<br />
== process described is lacking ==<br />
<br />
# doesn't specify that one needs to allow the postgres user to create databases<br />
# doesn't specify the postgres user (though this is deducible from the next line)<br />
# doesn't mention how to resolve when "php index.php" notes that open_base dir lacks the /etc config path<br />
# doesn't mention how to resolve the permissions issue relating to config.php<br />
--[[User:Milk|Milk]] ([[User talk:Milk|talk]]) 17:13, 11 March 2019 (UTC)</div>Milkhttps://wiki.archlinux.org/index.php?title=Talk:Quassel&diff=551806Talk:Quassel2018-10-28T14:52:10Z<p>Milk: /* Packaging for core on headless */ reply re overloaded deps</p>
<hr />
<div><br />
== Problems after upgrade ==<br />
Is there a better way to transfer settings from the previous quassel-client package to the new quassel-monolithic that does not mess up the settings? [[User:JKAbrams|JKAbrams]] ([[User talk:JKAbrams|talk]]) 18:16, 19 October 2014 (UTC)<br />
== Packaging for core on headless ==<br />
Are qt4 & qca really a dependancy of core or could core be built without them? The client-server model loses a lot of its appeal if installing the server component on a headless machine draws in a mountain of graphical environment packages.<br />
:See https://bugs.archlinux.org/task/59589 --[[User:Milk|Milk]] ([[User talk:Milk|talk]]) 14:52, 28 October 2018 (UTC)</div>Milkhttps://wiki.archlinux.org/index.php?title=JACK_Audio_Connection_Kit&diff=539689JACK Audio Connection Kit2018-09-04T21:07:34Z<p>Milk: add {{Related|Sound system}}</p>
<hr />
<div>[[Category:Sound]]<br />
[[fr:Jack]]<br />
[[ja:JACK Audio Connection Kit]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|Professional audio}}<br />
{{Related articles end}}<br />
From [[Wikipedia:JACK Audio Connection Kit]]:<br />
:JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API. <br />
<br />
==Installation==<br />
In order for JACK to work properly, your user needs to be [[Users and groups#Group management|added]] to the {{ic|realtime}} group for access to higher ulimits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} (provided by the {{Pkg|realtime-privileges}} package), which is needed for realtime audio processing.<br />
{{Note|You need to manually add your user to the {{ic|realtime}} group even if you're using logind, since logind just handles access to direct hardware.}}<br />
<br />
There are two JACK implementations, see [https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2 this comparison] for the difference between the two. In short, Jack 1 and Jack 2 are equivalent implementations of the same protocol. Programs compiled against Jack 1 will work with Jack 2 without recompile (and vice versa). <br />
<br />
===JACK2===<br />
'''JACK2''' is a C++ implementation with SMP support. [[Install]] it with the {{Pkg|jack2}} package. If you are on a 64-bit installation and need to run 32-bit applications that require JACK, also install the {{Pkg|lib32-jack2}} package from the [[multilib]] repository.<br />
<br />
====JACK2 D-Bus====<br />
JACK2 with [[D-Bus]] can be installed via {{Pkg|jack2-dbus}}. It is the same as the {{Pkg|jack2}} package but does not provide the legacy "jackd" server.<br />
<br />
It is controlled by the {{ic|jack_control}} utility. The jack_control utility requires you to also install the {{pkg|python2-dbus}} package as well.<br />
<br />
The important commands are listed below:<br />
jack_control start - starts the jack server<br />
jack_control stop - stops the jack server<br />
jack_control ds alsa - selects alsa as the driver (backend)<br />
jack_control eps realtime True - set engine parameters, such as realtime<br />
jack_control dps period 256 - set the driver parameter period to 256<br />
<br />
===JACK===<br />
'''JACK''' uses a C API and supports more than one soundcard on Linux (plus MIDI). [[Install]] it with the {{pkg|jack}} package. If you are on a 64-bit installation and need to run 32-bit applications that require JACK, also install the {{Pkg|lib32-jack}} package from the [[multilib]] repository.<br />
<br />
===GUI===<br />
<br />
* {{App|Cadence|Set of tools useful for audio production. It performs system checks, manages JACK, calls other tools and make system tweaks.|https://kxstudio.linuxaudio.org/Applications:Cadence|{{Pkg|cadence}}}}<br />
* {{App|Patchage|Modular patch bay for audio and MIDI systems based on JACK and ALSA.|https://drobilla.net/software/patchage|{{Pkg|patchage}}}}<br />
* {{App|PatchMatrix|JACK patch bay in flow matrix style.|https://git.open-music-kontrollers.ch/lad/patchmatrix/about/|{{Pkg|patchmatrix}}}}<br />
* {{App|[[Wikipedia:Qjackctl|QjackCtl]]|Simple Qt application to control the JACK sound server daemon.|https://qjackctl.sourceforge.io/|{{Pkg|qjackctl}}}}<br />
<br />
==Basic Configuration==<br />
<br />
===Overview===<br />
The right configuration for your hardware and application needs depends on several factors. Your sound card and CPU will heavily affect how low of latency you can achieve when using JACK.<br />
<br />
The mainline Linux kernel now supports realtime scheduling, so using a patched kernel is no longer necessary. However, {{AUR|linux-rt}} in the AUR is a patched kernel that has some extra patches that can help to get lower latencies.<br />
<br />
===A shell-based example setup===<br />
The D-Bus edition of JACK2 can make startup much easier. Formerly, QjackCtl was used to start it, or a daemonizer was used, or some other method. But using {{Pkg|jack2-dbus}}, JACK2 can be easily started and configured via a shell script.<br />
<br />
Create a shell script that can be executed at X login:<br />
<br />
{{hc|start_jack.sh|<br />
#!/bin/bash<br />
<br />
jack_control start<br />
jack_control ds alsa<br />
jack_control dps device hw:HD2<br />
jack_control dps rate 48000<br />
jack_control dps nperiods 2<br />
jack_control dps period 64<br />
sleep 10<br />
a2jmidid -e &<br />
sleep 10<br />
qjackctl &<br />
}}<br />
<br />
The above will start a working JACK instance which other programs can then utilize. Details of each line follow. When discovering your own best configuration, it is helpful to do trial and error using QjackCtl's GUI with a non-D-Bus JACK2 version.<br />
<br />
====Details of the shell-based example setup====<br />
<br />
jack_control start<br />
Starts JACK if it is not already started.<br />
jack_control ds alsa<br />
Sets JACK to use the ALSA driver set.<br />
jack_control dps device hw:HD2<br />
Sets JACK to use ALSA-compatible sound card named HD2. One can find the names with {{ic|cat /proc/asound/cards}}. Most ALSA tutorials and default configurations use card numbers, but this can get confusing when external MIDI devices are in use; names make it easier.<br />
jack_control dps rate 48000<br />
Sets JACK to use 48000 khz sampling. Happens to work very well with this card. Some cards only do 44100, many will go much higher. The higher you go, the lower your latency, but the better your card and your CPU have to be, and software has to support this as well.<br />
jack_control dps nperiods 2<br />
Sets JACK to use 2 periods. 2 is right for motherboard, PCI, PCI-X, etc.; 3 for USB.<br />
jack_control dps period 64<br />
Sets JACK to use 64 periods per frame. Lower is less latency, but the setting in this script gives 2.67 ms latency, which is nicely low without putting too much stress on the particular hardware this example was built for. If a USB sound system were in use it might be good to try 32. Anything less than 3-4 ms should be fine for realtime synthesis and/or FX, 5 ms is the smallest a human being can detect. QjackCtl will tell you how you are doing; at no-load, which means no clients attached, you will want a max of 3-5% CPU usage, and if you cannot get that without xruns (the red numbers which mean the system cannot keep up with the demands), you will have to improve your hardware.<br />
sleep 10<br />
Wait for the above to settle.<br />
a2jmidid -e &<br />
Start the ALSA-to-JACK MIDI bridge. Good for mixing in applications which take MIDI input through ALSA but not JACK.<br />
sleep 10<br />
Wait for the above to settle.<br />
qjackctl &<br />
Load QjackCtl. GUI configuration tells it to run in the system tray. It will pick up the JACK session started by D-Bus just fine, and very smoothly too. It maintains the patchbay, the connections between these applications and any other JACK-enabled apps to be started manually. The patchbay is set up using manual GUI, but connections pre-configured in the patchbay are automatically created by QjackCtl itself when apps are started.<br />
<br />
===A GUI-based example setup===<br />
This example setup utilizes a more GUI focused configuration and management of JACK<br />
<br />
* Install {{Pkg|jack2-dbus}}.<br />
* Install {{Pkg|qjackctl}}, and tell your GUI window/desktop system to run it at startup.<br />
* Make sure QjackCtl is told to:<br />
** use the D-Bus interface,<br />
** run at startup,<br />
** save its configuration to the default location,<br />
** start the JACK audio server on application startup,<br />
** enable the system tray icon, and<br />
** start minimized to system tray.<br />
* Reboot.<br />
* After logging in, you will see QjackCtl in your system tray. Left-click on it.<br />
* Tweak settings in the QjackCtl GUI to lower latency. The Frame Size, Frame Buffer, and Bitrate settings all affect latency. Larger frame sizes lower latency, lower frame buffers lower latency, and higher bitrate settings lower latency, but all increase load on the sound card and your CPU. A Latency of about ~5ms is desirable for direct monitoring of instruments or microphones, as the latency begins to become perceptible at higher latencies.<br />
<br />
===Playing nice with ALSA===<br />
To allow Alsa programs to play while jack is running you must install the jack plugin for alsa with {{Pkg|alsa-plugins}}.<br />
<br />
And enable it by editing (or creating) /etc/asound.conf (system wide settings) to have these lines:<br />
{{bc|<nowiki><br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}</nowiki>}}<br />
<br />
You need not restart your computer or anything. Just edit the alsa config files, start up jack, and there you go...<br />
<br />
Remember to start it as a '''user'''. If you start it with {{ic|jackd}} -d alsa" as user X, it will not work for user Y.<br />
<br />
Another approach, using ALSA loopback device (more complex but probably more robust), is described in [http://alsa.opensrc.org/Jack_and_Loopback_device_as_Alsa-to-Jack_bridge this article].<br />
<br />
=== GStreamer ===<br />
<br />
GStreamer requires the {{pkg|gst-plugins-good}} package to work with JACK, which contains the jackaudiosink plugin that adds JACK playback support.<br />
<br />
Further information (outdated): http://jackaudio.org/faq/gstreamer_via_jack.html<br />
<br />
=== PulseAudio ===<br />
If you need to keep {{Pkg|pulseaudio}} installed (in the event it is required by other packages, like {{Pkg|gnome-settings-daemon}}), you may want to prevent it from spawning automatically with X and taking over from JACK.<br />
<br />
Edit {{ic|/etc/pulse/client.conf}}, uncomment "autospawn" and set it to "no":<br />
;autospawn = yes<br />
autospawn = no<br />
<br />
''If you want both to play along, see: [[PulseAudio/Examples#PulseAudio through JACK]]''<br />
<br />
=== Firewire ===<br />
In order to prevent ALSA from messing around with your firewire devices you have to blacklist all firewire related kernel modules. This also prevents PulseAudio from using firewire. Create the following file:<br />
<br />
{{hc|/etc/modprobe.d/alsa-no-jack.conf|<br />
blacklist snd-fireworks<br />
blacklist snd-bebob<br />
blacklist snd-oxfw<br />
blacklist snd-dice<br />
blacklist snd-firewire-digi00x<br />
blacklist snd-firewire-tascam<br />
blacklist snd-firewire-lib<br />
blacklist snd-firewire-transceiver<br />
blacklist snd-fireface<br />
blacklist snd-firewire-motu<br />
}}<br />
<br />
''The list of modules is the most recent available at the time of writing at [https://github.com/takaswie/snd-firewire-improve Alsa Firewire Improve Repository].''<br />
<br />
Now you can unload your loaded firewire modules or reboot.<br />
<br />
==MIDI==<br />
<br />
JACK can handle one soundcard very well, and an arbitrary number of MIDI devices (connected e.g. via USB).<br />
If you start JACK and want to use a MIDI keyboard or a synthesizer or some other pure MIDI device, you have to start JACK with a proper soundcard (one that actually outputs or inputs PCM sound).<br />
As soon you have done that, you can connect the MIDI device. E.g. with QjackCtl ({{pkg|qjackctl}}), you click on the connect button and you will find your device listed under JACK-MIDI or ALSA-MIDI, depending on the driver.<br />
<br />
For JACK-MIDI, you may want to set the '''MIDI Driver''' to '''seq''' or '''raw''' in QjackCtl ''Setup > Settings''. This should make your MIDI device appear under the ''MIDI'' tab. You can also change the name of the client (from a generic "midi_capture_1" to something more descriptive), if you enable ''Setup > Display > Enable client/port aliases'' and then ''Enable client/port aliases editing (rename)''.<br />
<br />
For ALSA-MIDI, make sure to turn on '''Enable ALSA Sequencer support''' in QjackCtl ''Setup > Misc''. This will add the ''ALSA'' tab in QjackCtl ''Connect'' window where your MIDI controller will show up.<br />
<br />
For bridging ALSA-MIDI to JACK-MIDI, you may consider using a2jmidid ({{Pkg|a2jmidid}}). The following command will export all available ALSA MIDI ports to JACK MIDI ports:<br />
$ a2jmidid -e<br />
They will be visible in QjackCtl under the ''MIDI'' tab labelled "a2j" client.<br />
You can automate starting of a2jmidid by adding to QjackCtl ''Setup > Options > Execute script after Startup'': {{ic|/usr/bin/a2jmidid -e &}}<br />
{{note|When connecting MIDI keyboard controllers in QjackCtl, make sure to ''Expand All'' first and connect the desired ''Output Ports'' (below the ''Readable Clients'') to the ''Input Ports'' (below the ''Writable Clients''). As a shortcut, if you select a writable client instead of individual ports as your destination, it should connect all its currently displayed output ports underneath.}}<br />
<br />
*'''Q:''' What is the difference between JACK-MIDI and ALSA-MIDI?<br />
*'''A:''' The former has improved timing and sample accurate MIDI event alignment. It extends or may even replace the latter but at this point they both co-exist.<br />
<br />
To install some M-Audio MIDI keyboards, you will need the firmware package {{AUR|midisport-firmware}} in the [[AUR]]. Also, the snd_usb_audio module has to be available.<br />
For more information about specific USB MIDI devices, see http://alsa.opensrc.org/USBMidiDevices.<br />
<br />
==Troubleshooting==<br />
==="Cannot lock down memory area (Cannot allocate memory)" message on startup===<br />
<br />
See [[Realtime process management#Configuring PAM]] and ensure that the user is in the {{ic|realtime}} [[group]].<br />
<br />
===jack2-dbus and qjackctl errors===<br />
Still having the "Cannot allocate memory" and/or "Cannot connect to server socket err = No such file or directory" error(s) when pressing qjackctl's start button (assuming that you have package jack2-dbus installed) ?<br />
<br />
Please delete {{ic|~/.jackdrc}}, {{ic|~/.config/jack/conf.xml}}, {{ic|~/.config/rncbc.org/QjackCtl.conf}}. Kill ''jackdbus'' and restart from scratch :)<br />
(Thanks to nedko)<br />
<br />
Also try running <br />
$ fuser /dev/snd/*<br />
and check the resulting PID's with<br />
$ ps ax | grep [PID here]<br />
This will hopefully show the conflicting programs.<br />
<br />
==="ALSA: cannot set channel count to 1 for capture" error in logs===<br />
Change ALSA input and output channels from 1 to 2<br />
<br />
===Crackling or pops in audio===<br />
Your CPU or sound card is too weak to handle your settings for JACK. Lower the bitrate, lower the frame size, and raise the frame period in small increments until crackling stops.<br />
<br />
===Problems with specific applications===<br />
====VLC - no audio after starting JACK====<br />
Run VLC and change the following menu options:<br />
* Tools > Preferences<br />
* Show settings: All<br />
* Audio > Output modules > Audio output module: JACK audio output<br />
* Audio > Output modules > JACK: Automatically connect to writable clients (enable)<br />
<br />
==See also==<br />
<br />
* [https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2 Differences between JACK 1 and JACK2]<br />
* [http://jackaudio.org/faq/ JACK FAQ]</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=539688Professional audio2018-09-04T21:07:00Z<p>Milk: change last edit to {{Related|JACK}}, better fmt</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Some of the major pro audio applications are already available from the official Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]]. See [[List of applications#Audio]] and [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] for the available applications.<br />
<br />
=== System configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''realtime'' [[group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameter]].<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to [[fstab]] (see [[Improving performance#Mount options]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} and {{ic|/usr/lib/udev/rules.d/40-realtime-privileges.rules}} (these files are provided by {{pkg|realtime-privileges}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the realtime group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep realtime<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[installing]] the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing list ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
* #archlinux-proaudio on freenode.net: Arch Linux pro-audio channel<br />
* #lau on freenode.net: General Linux Audio channel for users<br />
* #lad on freenode.net: General Linux AUdio channel for developers<br />
* #opensourcemusicians on freenode.net: Large general OSS musician discussion channel</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=539687Professional audio2018-09-04T21:06:41Z<p>Milk: {{Related|JACK Audio Connection Kit}}</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|JACK Audio Connection Kit}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Some of the major pro audio applications are already available from the official Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]]. See [[List of applications#Audio]] and [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] for the available applications.<br />
<br />
=== System configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''realtime'' [[group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameter]].<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to [[fstab]] (see [[Improving performance#Mount options]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} and {{ic|/usr/lib/udev/rules.d/40-realtime-privileges.rules}} (these files are provided by {{pkg|realtime-privileges}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the realtime group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep realtime<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[installing]] the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing list ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
* #archlinux-proaudio on freenode.net: Arch Linux pro-audio channel<br />
* #lau on freenode.net: General Linux Audio channel for users<br />
* #lad on freenode.net: General Linux AUdio channel for developers<br />
* #opensourcemusicians on freenode.net: Large general OSS musician discussion channel</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=539681Professional audio2018-09-04T20:50:19Z<p>Milk: /* IRC */ add freenode to last edit</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Some of the major pro audio applications are already available from the official Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]]. See [[List of applications#Audio]] and [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] for the available applications.<br />
<br />
=== System configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''realtime'' [[group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameter]].<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to [[fstab]] (see [[Improving performance#Mount options]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} and {{ic|/usr/lib/udev/rules.d/40-realtime-privileges.rules}} (these files are provided by {{pkg|realtime-privileges}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the realtime group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep realtime<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[installing]] the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing list ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
* #archlinux-proaudio on freenode.net: Arch Linux pro-audio channel<br />
* #lau on freenode.net: General Linux Audio channel for users<br />
* #lad on freenode.net: General Linux AUdio channel for developers<br />
* #opensourcemusicians on freenode.net: Large general OSS musician discussion channel</div>Milkhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=539680Professional audio2018-09-04T20:49:53Z<p>Milk: /* IRC */ as #osm note</p>
<hr />
<div>[[Category:Sound]]<br />
[[ja:プロオーディオ]]<br />
[[ru:Professional audio]]<br />
{{Related articles start}}<br />
{{Related|Sound system}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting started ==<br />
<br />
Some of the major pro audio applications are already available from the official Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]]. See [[List of applications#Audio]] and [https://github.com/nodiscc/awesome-linuxaudio awesome-linuxaudio] for the available applications.<br />
<br />
=== System configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''realtime'' [[group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameter]].<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to [[fstab]] (see [[Improving performance#Mount options]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-realtime-privileges.conf}} and {{ic|/usr/lib/udev/rules.d/40-realtime-privileges.rules}} (these files are provided by {{pkg|realtime-privileges}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the realtime group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep realtime<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-realtime-privileges.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}}, {{Pkg|cadence}} and {{pkg|patchage}} can all be used to as GUIs to monitor JACK's status and simplify its configuration . <br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: [http://www.linux-magazine.com/content/download/63041/486886/version/1/file/JACK_Audio_Server.pdf Linux Magazine article]''<br />
<br />
==== FireWire ====<br />
<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
{{Note|As stated by Takashi Sakamoto [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html on the alsa-devel mailing list], if you use the FireWire backend with jackd, the DICE module is incompatible. If you see a line like this :<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
you need to disable the "snd_dice" module.}}<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to [[install]] the {{AUR|libflashsupport-jack}} package.<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by [[installing]] the {{Pkg|alsa-plugins}} package. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan JACK script ====<br />
<br />
Most people will probably want to run JACK in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have JACK work properly in real time mode is to run the Quickscan script. <br />
<br />
https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
==== Desktop Effects vs JACK ====<br />
<br />
In addition to the factors listed under the System Configuration section above as well as the settings checked by realTimeConfigQuickScan.pl, it is also worth noting that desktop environments can cause xruns and hence JACK audio glitches, especially memory/process intensive ones and those desktops that utilize composited desktop effects. It is recommended you disable desktop effects when using JACK. You are likely to get the least xruns and best performance by running a lightweight desktop or just a window manager instead.<br />
<br />
==== A general example ====<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Realtime kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
==== Binaries ====<br />
<br />
Some users provide binaries for the AUR packages above in [[Unofficial user repositories]]:<br />
<br />
* [https://www.suruatoel.xyz/arch coderkun-aur-audio]<br />
<br />
== MIDI ==<br />
To decrease MIDI jitter when using external MIDI equipment jack2's -Xalsarawmidi option should be used. When doing this you need to use a2jmidid, too.<br />
<br />
With [https://github.com/koppi/alsa-midi-latency-test alsa-midi-latency-test] you could test how much jitter you get. PCI and PCIe cards are usually much better than USB MIDI devices.<br />
<br />
To work with MIDI, it is highly recommended that you install a2j ({{Pkg|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
* Disable WiFi and close any programs that don't need to be open when recording such as browsers. Many have reported disabling WiFi has led to more reliable JACK performance.<br />
<br />
* Some USB audio hardware is known not to work properly when plugged into USB 3 ports so try USB 2/1 ports instead. <br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{Pkg|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* If you need to use multiple audio devices with JACK2, the '''alsa_in''' and '''alsa_out''' utilities. can be used to have extra devices wrapped and show up as outputs in the JACK patchbay.<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
The majority of sound cards and audio devices will work with no extra configuration or packages, simply set the sound card jack is using to them and restart.<br />
<br />
This is not true for all devices, and so special cases are also listed.<br />
<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|2=<br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
<br />
This .asoundrc file enables 24-bit IO on the fast-track pro (and I'm sure it could be modified to work with other 3-byte usb devices) within the context of jack's 32-bit interface while routing default alsa traffic to jack outputs on the audio interface. Alsa will be in S24_3BE mode but jack can plug S32_LE data in and out of the interface and other alsa programs will be able to plug almost anything into jack.<br />
<br />
{{bc|<nowiki><br />
### ~/.asoundrc<br />
### default alsa config file, for a fast-track pro configured in 24-bit mode as so:<br />
### options snd_usb_audio device_setup=0x9<br />
### invoke jack with: (if you use -r48000, change the rate in the plugs as well)<br />
### $jackd -dalsa -P"hw:Pro" -C"hw:Pro,1" -r44100<br />
<br />
## setup input and output plugs so jack can write S24_3BE data to the audio interface<br />
<br />
pcm.maud0 {<br />
type hw<br />
card Pro<br />
}<br />
<br />
#jack_out plug makes sure that S32_LE data can be written to hw:Pro<br />
pcm.jack_out{<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud0<br />
}<br />
<br />
pcm.maud1 {<br />
type hw<br />
card Pro<br />
device 1<br />
}<br />
## jack_in plug makes sure that hw:Pro,1 can read S32_LE data<br />
pcm.jack_in {<br />
type plug<br />
format S32_LE<br />
channels 2<br />
rate 44100<br />
slave pcm.maud1<br />
}<br />
#####<br />
# route default alsa traffic through jack system io<br />
<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
} <br />
pcm.amix {<br />
type asym<br />
playback.pcm "jack"<br />
capture.pcm "jack"<br />
}<br />
pcm.!default {<br />
type plug<br />
slave.pcm amix<br />
}<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
===Tascam US-122===<br />
'''''This does not apply to the US-122L'''''<br />
<br />
# Required packages: {{Pkg|alsa-tools}} {{Pkg|alsa-firmware}} {{Aur|fxload}}<br />
# udev rules: create the following rules file, then reload udev rules, [[Udev#Loading new rules]]<br />
{{hc|/etc/udev/rules.d/51-tascam-us-122.rules|<nowiki>SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8006", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/alsa/firmware/usx2yloader/tascam_loader.ihx -I /usr/share/alsa/firmware/usx2yloader/us122fw.ihx'"<br />
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idProduct}=="8007", ATTRS{idVendor}=="1604", RUN+="/bin/sh -c '/usr/bin/usx2yloader'"</nowiki><br />
}}<br />
Plug in the unit<br />
The device should now be working, there are no software mixer controls<br />
<br />
=== RME Babyface ===<br />
<br />
It works very well at low latencies (~5ms) with {{Pkg|alsa-utils}}, {{Pkg|jack2}} and {{AUR|linux-rt}}. Running on ALSA only with the standard kernel may cause crackling at lower latencies.<br />
<br />
To be recognized and work, the firmware version of the Babyface needs to be >= 200, which introduces the Class Compliant Mode. To enter Class Compliant Mode hold the "Select" and "Recall" buttons while connecting the Babyface to the computer via USB. It should now be recognized. <br />
<br />
To check if it is recognized:<br />
<br />
grep -i baby /proc/asound/cards<br />
<br />
For more info about the Class Compliant Mode visit RME's website, they have PDF which covers all the functionality.<br />
<br />
The Babyface does not need any special Jack Settings. But if you want to use the built in MIDI In/Out then you need to set the "MIDI Driver" to "seq" and optionally disable "Enable Alsa Sequencer Support" to use it in combination with other MIDI Devices (a USB Midi Keyboard for example).<br />
<br />
== Restricted software ==<br />
<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the news ==<br />
<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010<br />
<br />
== Mailing list ==<br />
<br />
* [https://lists.archlinux.org/listinfo/arch-proaudio Arch Linux Pro-audio] Discussion about real-time multimedia, including (semi-)pro audio and video<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-dev Linux Audio Developer] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of mainly developers.<br />
* [https://lists.linuxaudio.org/listinfo/linux-audio-user Linux Audio User] The Linux pro-audio related mailing list with much traffic and a huge subscriber community of users and developers.<br />
<br />
== IRC ==<br />
<br />
* #archlinux-proaudio on freenode.net: Arch Linux pro-audio channel<br />
* #lau on freenode.net: General Linux Audio channel for users<br />
* #lad on freenode.net: General Linux AUdio channel for developers<br />
* #opensourcemusicians: Large general OSS musician discussion channel</div>Milkhttps://wiki.archlinux.org/index.php?title=Quassel&diff=532967Quassel2018-08-09T14:07:42Z<p>Milk: added related articles</p>
<hr />
<div>[[Category:Internet Relay Chat]]<br />
[[ja:Quassel]]<br />
{{Related articles start}}<br />
{{Related|IRC channels}}<br />
{{Related|IRC}}<br />
{{Related|WeeChat}}<br />
{{Related|irssi}}<br />
{{Related|HexChat}}<br />
{{Related articles end}}<br />
[http://quassel-irc.org/ Quassel] (sometimes referred to as Quassel IRC) is a cross-platform IRC client introduced in 2008. It is dual-licensed under GPLv2 and GPLv3, while most graphical data is licensed under the LGPL and provided by the [http://www.oxygen-icons.org/ Oxygen Team]. The client part of Quassel uses the Qt framework for its user interface.<br />
<br />
== Structure ==<br />
<br />
Quassel is split up into two parts by a server-client model; a client and a core. There is also a monolithic version of the official client that does not require a core. The core(server) is the application that actually does the communication with IRC networks, while the client(s) only communicates with the core. This gives the user a flexibility of having the same instance to IRC networks on different clients (e.g. mobile, desktop at the same time).<br />
<br />
== Installation ==<br />
<br />
=== Basic usage ===<br />
<br />
Just install the {{Pkg|quassel-monolithic}} package if you only want to use Quassel from a single computer.<br />
<br />
=== Setting up multiple clients to connect through the same core ===<br />
<br />
Install {{Pkg|quassel-core}} and {{Pkg|quassel-client}}.<br />
<br />
Generate a certificate (this will be valid for 1 years, after which it needs to be reissued, just change the -days to another value if you so desire):<br />
<br />
# openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /var/lib/quassel/quasselCert.pem -out /var/lib/quassel/quasselCert.pem<br />
# chown quassel:quassel /var/lib/quassel/quasselCert.pem<br />
<br />
As this is a self-signed certificate, you can type whatever you want in the fields.<br />
<br />
Open port {{ic|4242}} in your [[firewall]].<br />
<br />
Start core by [[start]]ing {{ic|quassel.service}}.<br />
<br />
Start the client and connect to core:<br />
<br />
$ quasselclient<br />
<br />
Accept your self-created certificate.<br />
<br />
Now set up your IRC-servers and IRC-nicknames on the core.<br />
<br />
{{Note|As this is the first time you connected to the core, you should see a wizard where you can set up the first user-account. If you do not get this wizard, your settings might be messed up, see troubleshooting below.}}<br />
<br />
If you choose to use [[PostgreSQL]] as backend you will need to create a database and user for quasselcore.<br />
<br />
[postgres]$ psql -c "CREATE USER quassel WITH PASSWORD <nowiki>'</nowiki>''myPassword''<nowiki>'</nowiki>;"<br />
[postgres]$ psql -c "CREATE DATABASE quassel WITH OWNER quassel ENCODING 'UTF8';"<br />
<br />
See also [https://bugs.quassel-irc.org/projects/quassel-irc/wiki/PostgreSQL PostgreSQL instruction on Quassel wiki].<br />
<br />
Once it all works, you can [[enable]] {{ic|quassel.service}} to start automatically on system boot.<br />
<br />
== Adding users ==<br />
<br />
If you want additional users to be able to use the same core, run this command to create them:<br />
<br />
$ sudo -u quassel quasselcore --configdir=/var/lib/quassel --add-user<br />
<br />
It will then prompt you for a new account's username and password.<br />
<br />
== See also ==<br />
<br />
* [http://bugs.quassel-irc.org/projects/quassel-irc/wiki QuasselWiki]</div>Milkhttps://wiki.archlinux.org/index.php?title=WeeChat&diff=532966WeeChat2018-08-09T14:06:26Z<p>Milk: add {{Related|Quassel}}</p>
<hr />
<div>[[Category:Internet Relay Chat]]<br />
[[ja:WeeChat]]<br />
{{Style|See [[Help:Style]] and related.}}<br />
<br />
{{Related articles start}}<br />
{{Related|IRC channels}}<br />
{{Related|IRC}}<br />
{{Related|irssi}}<br />
{{Related|HexChat}}<br />
{{Related|Quassel}}<br />
{{Related articles end}}<br />
[https://weechat.org/ WeeChat] is a highly extendable and feature rich [[wikipedia:Internet Relay Chat|IRC]] Client currently under heavy development.<br />
<br />
== Installing ==<br />
<br />
[[Install]] the {{Pkg|weechat}} package, or {{AUR|weechat-git}} for the development version.<br />
<br />
== Running WeeChat==<br />
<br />
Since WeeChat shall have multiple interfaces at some point, run '''weechat-[interface]''' to start WeeChat as desired.<br />
<br />
The current implementation only comes with {{ic|weechat-ncurses}}. Therefore, the following commands are interchangeable until other interfaces are implemented:<br />
<br />
$ weechat<br />
$ weechat-ncurses<br />
<br />
== Configuration ==<br />
<br />
You can configure WeeChat in 3 ways: using WeeChat's internal commands; using '''iset'''; or by editing the .conf files directly. WeeChat will automatically save settings on exit or when you run {{ic|/save}}, so if you are editing a .conf file in an editor, be sure to run {{ic|/reload}} from the console before exiting, otherwise your changes will be lost.<br />
<br />
=== Internal commands ===<br />
<br />
The {{ic|/set}} command follows this structure:<br />
{{ic|/set [file.name].[section].[directive]}}<br />
<br />
You can get a list of all configurable options by typing {{ic|/set}} in the '''weechat''' buffer window. Since there are nearly 600 default configurable options, you can search through them with a wildcard syntax: {{ic|/set irc.server.*}} or {{ic|/set *server*}} as an example. You can get help on each option with the {{ic|/help}} command:<br />
<br />
/help irc.server.freenode.autoconnect<br />
<br />
=== Internal menu-based ===<br />
<br />
For a more convenient method, install the '''iset''' script. If you have weechat 0.3.9 or newer, run:<br />
<br />
/script install iset.pl<br />
<br />
In older versions, use {{ic|/weeget install iset}}, or download [https://www.weechat.org/scripts/source/stable/iset.pl.html/ iset.pl] into your {{ic|~/.weechat/perl/autoload}} directory manually.<br />
<br />
Afterwards, run<br />
<br />
/iset<br />
<br />
to get a buffer with all configuration options.<br />
<br />
=== Configuration Files ===<br />
<br />
The .conf files for WeeChat are saved to {{ic|~/.weechat}}. These files are not commented. Detailed information can be found within the program itself (see '''Internally''' above), or WeeChat's [https://www.weechat.org/files/doc/stable/weechat_user.en.html user guide].<br />
<br />
{{Tip|in case you want to move {{ic|.weechat}} directory somewhere else (like in your '''$XDG_CONFIG_HOME'''), use this option: {{ic|$weechat -d $XDG_CONFIG_HOME/weechat}} or set the environment variable {{ic|WEECHAT_HOME}}.}}<br />
<br />
== Connecting to a server ==<br />
<br />
{{Note| Using '''/connect''' to connect to a temporary server is disabled by default if you're using 1.1+ [https://weechat.org/files/releasenotes/ReleaseNotes-devel.html#_temporary_servers_disabled_by_default_with_connect Release Note]<br />
<br />
Enable by '''/set irc.look.temporary_servers on'''<br />
<br />
}}<br />
<br />
You can connect to a IRC server by using '''/connect'''.<br />
<br />
/connect chat.freenode.net<br />
<br />
Or if there is already a '''Server''' setup you can use:<br />
<br />
/connect freenode<br />
<br />
== Creating a Server profile ==<br />
<br />
If you plan on connecting to a server more than once it may be beneficial to create a '''Server'''.<br />
<br />
/server add example irc.example.net/6667<br />
<br />
Would create the server '''example''' which would connect to '''irc.example.net''' on port '''6667'''<br />
<br />
See the WeeChat documentation and '''/help server''' for more information.<br />
<br />
== Configuring SSL ==<br />
<br />
Many IRC servers, including [https://freenode.net/ freenode] where [[IRC channel|#archlinux]] is, support SSL.<br />
<br />
If you're making a server with '''/server''', add the SSL port (usually 6697) and '''-ssl''' to the end of the line. For example:<br />
<br />
/server add freenode chat.freenode.net/6697 -ssl<br />
<br />
You can do the same thing if using '''/connect'''.<br />
<br />
/connect chat.freenode.net/6697 -ssl<br />
<br />
{{Warning|Some servers need the '''ssl_dhkey_size''' value changed to something lower. For example, if you're using freenode you'll need to set '''/set irc.server.freenode.ssl_dhkey_size 1024''' or '''/set irc.server.chat.freenode.net.ssl_dhkey_size 1024''' (see the server log)}}<br />
<br />
{{Note|Different servers may have a different port than 6697 - this is server specific.}}<br />
<br />
You may also want to change the location where WeeChat looks for trusted authorities (the default value is {{ic|%h/ssl/CAs.pem}} which translates to {{ic|~/.weechat/ssl/CAs.pem)}}:<br />
<br />
/set weechat.network.gnutls_ca_file "/etc/ssl/certs/ca-certificates.crt"<br />
<br />
== Tips and Tricks ==<br />
<br />
=== Upgrading ===<br />
<br />
WeeChat can be upgraded without disconnecting from the IRC servers (non-SSL connections only):<br />
<br />
/upgrade<br />
<br />
This will load the new WeeChat binary and reload the current configuration.<br />
<br />
=== Aliases ===<br />
<br />
Aliases can be created to simplify commonly executed commands. A nice example is Wraithan's '''smart filter''' alias:<br />
<br />
'''Smart Filter'''<br />
<br />
First, we need to enable smart filters:<br />
<br />
/set irc.look.smart_filter "on"<br />
<br />
Next, we will create the '''sfilter''' alias:<br />
<br />
/alias add sfilter filter add irc_smart_$server_$channel irc.$server.$channel irc_smart_filter *<br />
<br />
We can now type<br />
<br />
/sfilter<br />
<br />
in any buffer, and the smart filter will only be enabled for that buffer.<br />
<br />
The following alias will remove a previously enabled smart filter in the current buffer. Add the alias:<br />
<br />
/alias add rmsfilter filter del irc_smart_$server_$channel<br />
<br />
and execute it by<br />
<br />
/rmsfilter<br />
<br />
=== Exec command ===<br />
A new plugin called "exec" has been added, with command {{ic|/exec}}. It will execute external command and can display output to the current buffer with the '''-o''' option or locally (default).<br />
<br />
=== Key Bindings ===<br />
<br />
See {{ic|/help key}}.<br />
<br />
=== SSH connection lost when idle ===<br />
<br />
If you're connecting to your WeeChat through a remote shell using SSH, for example running it in [[screen]] or [[tmux]] you might experience getting disconnected after a while when idle. There are multiple factors in play why this might happen, but the easiest way to change this is to force the connection to be kept alive by appending this to your SSH-configuration on the remote shell.<br />
<br />
This has nothing to do with WeeChat itself, but losing connection when idle won't happen with it's alternative [[irssi]] by default, and thus is a common situation for those converting to WeeChat.<br />
<br />
{{hc|# /etc/ssh/sshd_config|2=<br />
ClientAliveInterval 300}}<br />
<br />
Or have a look at [https://mosh.org Mosh].<br />
<br />
=== Slack ===<br />
<br />
{{Warning|[https://get.slack.help/hc/en-us/articles/201727913-Connect-to-Slack-over-IRC-and-XMPP Slack will end support for IRC gateways on 2018-05-15.]}}<br />
<br />
[https://slack.com/ Slack] is a platform for team communication; an IRC on steroids. Thanks to its open API, it is possible to connect to your slack team using weechat.<br />
<br />
==== IRC gateway ====<br />
<br />
Once weechat is running, all you have to is add a new server this way:<br />
<br />
{{ic|<nowiki>/server add NAME HOST/6667 -autoconnect -ssl -ssl_dhkey_size=512 -password=PASSWORD -username=USERNAME -nicks=NICK</nowiki>}}<br />
<br />
where:<br />
<br />
* '''NAME''' is the name you want to give to the server<br />
* '''HOST''' is the the Host as provided on the Gateways page of your slack team<br />
* '''PASSWORD''' is the Pass as provided on the Gateways page of your slack team<br />
* '''USERNAME''' is the User as provided on the Gateways page of your slack team<br />
* '''NICK''' is your Slack username.<br />
<br />
===== Upload file =====<br />
<br />
To upload a file, run this following command from your shell :<br />
<br />
{{ic|<nowiki>curl -F file=@/path/to/file -F channels=CHAN -F token=XXX https://slack.com/api/files.upload</nowiki>}}<br />
<br />
where:<br />
<br />
* '''CHAN''' is the channel ID as provided on the Gateways page of your slack team<br />
* '''XXX''' is the team token as provided on the Gateways page of your slack team<br />
<br />
==== Native client ====<br />
<br />
There is a native client for slack: [https://github.com/rawdigits/wee-slack wee-slack]<br />
<br />
=== Desktop notifications ===<br />
<br />
To receive desktop notifications for mentions or private messages, the [https://github.com/s3rvac/weechat-notify-send weechat-notify-send] script by Petr Zemek can be used.<br />
<br />
To install, use:<br />
<br />
cd ~/.weechat/python<br />
curl -O <nowiki>https://raw.githubusercontent.com/s3rvac/weechat-notify-send/master/notify_send.py</nowiki><br />
ln -s ../notify_send.py autoload/<br />
<br />
The script uses {{Pkg|libnotify}} and is known to work with both KDE and Gnome.<br />
<br />
Another alternative with the built-in {{Ic|trigger}} plugin is to set a value for {{Ic|trigger.trigger.beep.command}}.<br />
<br />
/set trigger.trigger.beep.command "/print -beep;/exec -bg notify-send -i '/usr/share/icons/hicolor/32x32/apps/weechat.png' 'IRC Notification' "${tg_tag_nick}: ${tg_message_nocolor}""<br />
<br />
=== Mobile device notifications ===<br />
<br />
To receive notifications for mentions or private messages to an Android mobile device, you can use the [https://irssinotifier.appspot.com/ IrssiNotifier] port to WeeChat from [https://www.weechat.org/files/scripts/irssinotifier.py here]. This script requires a Google Account, and a registration step with the service provider to obtain an API key. Then, install the plugin<br />
<br />
cd ~/.weechat/python<br />
curl -O <nowiki>https://www.weechat.org/files/scripts/irssinotifier.py</nowiki><br />
ln -s ../irssinotifier.py autoload/<br />
<br />
and intialize the API token and end-to-end encryption password in WeeChat<br />
<br />
/set plugins.var.python.irssinotifier.api_token your-api-token-from-website<br />
/set plugins.var.python.irssinotifier.encryption_password your-password-same-as-in-andoid-app<br />
/save<br />
<br />
An alternative that does not require a Google Account is a Ruby script for [https://www.notifymyandroid.com NotifyMyAndroid.com] from [https://github.com/jamtur01/nma-weechat here], with a similar installation procedure to the above, but into {{ic|~/.weechat/ruby}}.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Errors loading plugins ===<br />
<br />
You may see output like the following in the main window after starting '''weechat''':<br />
<br />
{{bc|<nowiki>13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/ruby.so": libruby.so.2.4: cannot open shared object file: No such file or directory<br />
13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...)<br />
13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/lua.so": liblua.so.5.3: cannot open shared object file: No such file or directory<br />
13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...)<br />
13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/aspell.so": libaspell.so.15: cannot open shared object file: No such file or directory<br />
13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...)<br />
13:26:10 =!= | Error: unable to load plugin "/usr/lib/weechat/plugins/tcl.so": libtcl8.6.so: cannot open shared object file: No such file or directory<br />
13:26:10 =!= | If you're trying to load a script and not a C plugin, try command to load scripts (/perl, /python, ...)</nowiki>|bc}}<br />
<br />
The default configuration for weechat attempts to load all plugins found in /usr/lib/weechat/plugins which in this case includes ruby, lua, aspell and tcl. These packages are not required by the weechat package and may not be installed on your machine. There are two options if these errors bother you:<br />
<br />
# [[Packages|Install]] {{Pkg|ruby}}, {{Pkg|lua}}, {{Pkg|aspell}} and/or {{Pkg|tcl}} from the [[official repositories]].<br />
# Or, run {{ic|/set weechat.plugin.autoload "*,!ruby,!lua,!aspell,!tcl"}} which will prevent loading those plugins with a bang (!) prefix.<br />
<br />
== Getting Help ==<br />
<br />
To access WeeChat's built-in help, simply type<br />
<br />
/help<br />
<br />
and the help will be displayed in the main buffer (usually buffer 1).<br />
<br />
== See also ==<br />
<br />
* [https://www.weechat.org Home Page]<br />
* [https://www.weechat.org/doc/ WeeChat Documentation]<br />
* [https://www.weechat.org/scripts/ WeeChat Scripts]<br />
* [https://weechat.org/blog/ WeeChat Development Blog]<br />
<br />
=== Guides ===<br />
* [https://weechat.org/files/doc/stable/weechat_quickstart.en.html Official WeeChat quick start guide] - a good place to start<br />
* [https://guides.fixato.org/weechat FiXato's guide to WeeChat] - A Weechat Contributers Guide<br />
* [https://gist.github.com/pascalpoitras/8406501 My always up-to-date WeeChat configuration] - r3m (weechat-dev)</div>Milkhttps://wiki.archlinux.org/index.php?title=Screen_capture&diff=517532Screen capture2018-04-15T02:16:56Z<p>Milk: /* Screenshot of the active/focused window */ rm newline</p>
<hr />
<div>[[Category:Image manipulation]]<br />
[[cs:Taking a screenshot]]<br />
[[es:Taking a screenshot]]<br />
[[fr:Capture d'écran]]<br />
[[ja:スクリーンショットの取得]]<br />
[[ru:Taking a screenshot]]<br />
[[zh-hans:Taking a screenshot]]<br />
{{Related articles start}}<br />
{{Related|Extra keyboard keys}}<br />
{{Related articles end}}<br />
This article explains different methods to take [[Wikipedia:Screenshot|screenshots]] on your system.<br />
<br />
== Dedicated software ==<br />
<br />
* {{App|Deepin Screenshot|A quite easy-to-use screenshot tool. Features: global hotkey to trigger screenshot tool, take screenshot of a selected area, easy to add text and line drawings onto the screenshot. Python/Qt5 based.|https://www.deepin.org/|{{Pkg|deepin-screenshot}}}}<br />
* {{App|Escrotum|Screen capture using pygtk, inspired by scrot.|https://github.com/Roger/escrotum|{{AUR|escrotum-git}}}}<br />
* {{App|Flameshot|QT5 based software for interactive screenshot taking. Select the desired area, draw with different tools and enjoy the customization capabilities.|https://github.com/lupoDharkael/flameshot|{{Pkg|flameshot}}}}<br />
* {{App|gnome-screenshot|Despite its name its dependencies are only dconf, gtk3, and libcanberra.|http://gnome.org|{{Pkg|gnome-screenshot}}}}<br />
* {{App|gscreenshot|Simple GTK screenshot utility with delays, selection, and copy-to-clipboard functionality.|https://github.com/thenaterhood/gscreenshot|{{AUR|gscreenshot}}}}<br />
* {{App|imgur-screenshot|Take screenshot selection, upload to [http://imgur.com imgur]. + more cool things|https://github.com/jomo/imgur-screenshot|{{AUR|imgur-screenshot-git}}}}<br />
* {{App|KShare|A ShareX inspired cross platform utility written with Qt.|https://kshare.arsenarsen.com|{{AUR|kshare}}}}<br />
* {{App|Lightscreen|Lightscreen is a simple tool to automate the tedious process of saving and cataloging screenshots, it operates as a hidden background process that is invoked with one (or multiple) hotkeys and then saves a screenshot file to disk according to the user's preferences.|http://lightscreen.com.ar|{{AUR|lightscreen}}}}<br />
* {{App|maim|A simple command line utility that takes screenshots. It's meant to replace scrot and performs better than scrot in many ways.|https://github.com/naelstrof/maim|{{Pkg|maim}}}}<br />
* {{App|screencloud| allows you to take a screenshot of the entire screen or to select an area and then uploading the screenshot to [http://imgur.com imgur]+auth. has plugins and system tray. |http://screencloud.net/|{{AUR|screencloud}}}}<br />
* {{App|screengrab|Cross-platform application designed to quickly take screenshots (Qt).|http://screengrab.doomer.org/|{{AUR|screengrab}}}}<br />
* {{App|[[Wikipedia:Scrot|Scrot]]|Simple command-line screenshot utility for X.|http://freecode.com/projects/scrot|{{Pkg|scrot}}}}<br />
* {{App|Shutter|Rich screenshot and editing program. Supports [https://hyp.is/AVQUNTRUH9ZO4OKSlue9/askubuntu.com/questions/252281/how-do-i-take-screenshots-with-a-delay/260178 delay]. |http://shutter-project.org/|{{AUR|shutter}}}}<br />
* {{App|Spectacle|[[KDE]] application for taking screenshots. It is capable of capturing images of the whole desktop, a single window, a section of a window, a selected rectangular region or a freehand region. Part of {{Grp|kdegraphics}}.|https://github.com/KDE/spectacle/|{{Pkg|spectacle}}}}<br />
* {{App|Xfce4 Screenshooter|This application allows you to capture the entire screen, the active window or a selected region. You can set the delay that elapses before the screenshot is taken and the action that will be done with the screenshot: save it to a PNG file, copy it to the clipboard, open it using another application, or host it on free online image hosting services Imgur and ZimageZ. Part of {{Grp|xfce4-goodies}}.|http://goodies.xfce.org/projects/applications/xfce4-screenshooter|{{Pkg|xfce4-screenshooter}}}}<br />
* {{App|xwd|X Window System image dumping utility|http://xorg.freedesktop.org/|{{Pkg|xorg-xwd}}}}<br />
<br />
== Packages including a screenshot utility ==<br />
<br />
* {{App|[[Wikipedia:GIMP|GIMP]]|Image editing suite in the vein of proprietary editors such as [[Wikipedia:Adobe Photoshop|Adobe Photoshop]]. GIMP ([[GNU]] Image Manipulation Program) has been started in the mid 1990s and has acquired a large number of [[CMYK support in The GIMP|plugins]] and additional tools.|http://www.gimp.org/|{{Pkg|gimp}}}}<br />
* {{App|[[Wikipedia:GraphicsMagick|GraphicsMagick]]|Fork of ImageMagick designed to have API and command-line stability. It also supports multi-CPU for enhanced performance and thus is used by some large commercial sites (Flickr, etsy) for its performance.|http://www.graphicsmagick.org/|{{Pkg|graphicsmagick}}}}<br />
* {{App|[[Wikipedia:ImageMagick|ImageMagick]]|Command-line image manipulation program. It is known for its accurate format conversions with support for over 100 formats. Its API enables it to be scripted and it is usually used as a backend processor.|http://www.imagemagick.org/script/index.php|{{Pkg|imagemagick}}}}<br />
* {{App|Imlib2|Library that does image file loading and saving as well as rendering, manipulation, arbitrary polygon support.|http://sourceforge.net/projects/enlightenment/|{{Pkg|imlib2}}}}<br />
* {{App|MATE Utils|Common MATE utilities for viewing disk usage, logs and fonts, taking screenshots, managing dictionaries and searching files.|http://mate-desktop.org|{{Pkg|mate-utils}}}}<br />
<br />
== Details: general methods ==<br />
<br />
=== ImageMagick/GraphicsMagick ===<br />
<br />
An easy way to take a screenshot of your current system is using the {{ic|import}} command:<br />
$ import -window root screenshot.jpg<br />
<br />
{{ic|import}} is part of the {{Pkg|imagemagick}} package.<br />
<br />
Running {{ic|import}} without the {{ic|-window}} option allows selecting a window or an arbitrary region interactively.<br />
<br />
{{Note|If you prefer '''graphicsmagick''' alternative, just prepend "gm", e.g. {{ic|$ gm import -window root screenshot.jpg}}.}}<br />
<br />
==== Screenshot of multiple X screens ====<br />
<br />
If you run twinview or dualhead, simply take the screenshot twice and use {{Ic|imagemagick}} to paste them together:<br />
{{bc|<br />
import -window root -display :0.0 -screen /tmp/0.png<br />
import -window root -display :0.1 -screen /tmp/1.png<br />
convert +append /tmp/0.png /tmp/1.png screenshot.png<br />
rm /tmp/{0,1}.png<br />
}}<br />
<br />
==== Screenshot of individual Xinerama heads ====<br />
<br />
Xinerama-based multi-head setups have only one virtual screen. If the physical screens are different in height, you will find dead space in the screenshot. In this case, you may want to take screenshot of each physical screen individually. As long as Xinerama information is available from the X server, the following will work:<br />
{{bc|<nowiki><br />
#!/bin/sh<br />
xdpyinfo -ext XINERAMA | sed '/^ head #/!d;s///' |<br />
while IFS=' :x@,' read i w h x y; do<br />
import -window root -crop ${w}x$h+$x+$y head_$i.png<br />
done<br />
</nowiki>}}<br />
<br />
==== Screenshot of the active/focused window ====<br />
<br />
The following script takes a screenshot of the currently focused window. It works with EWMH/NetWM compatible X Window Managers. To avoid overwriting previous screenshots, the current date is used as the filename.<br />
$ import -window `xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | echo ${activeWinLine:40}` /tmp/$(date +%F_%H%M%S_%N).png<br />
<br />
Alternatively, the following should work regardless of EWMH support:<br />
$ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png<br />
<br />
Further, the following gives a selection mouse pointer; click a window to capture it, or click and drag to manually select an area;<br />
$ import /tmp/$(date +%F_%H%M%S_%N).png<br />
<br />
{{Note|If screenshots of some programs (dwb and zathura) appear blank, try appending {{ic|-frame}} or removing {{ic|-f}} from the {{ic|xdotool}} command.}}<br />
<br />
=== GIMP ===<br />
<br />
You also can take screenshots with GIMP (''File > Create > Screenshot''...).<br />
<br />
=== xwd ===<br />
<br />
Take a screenshot of the root window:<br />
$ xwd -root -out screenshot.xwd<br />
<br />
{{Note|The methods for taking shots of active windows with {{ic|import}} can also be used with {{ic|xwd}}.}}<br />
<br />
=== scrot ===<br />
<br />
{{Pkg|scrot}} enables taking screenshots from the CLI and offers features such as a user-definable time delay. Unless instructed otherwise, it saves the file in the current working directory.<br />
$ scrot -t 20 -d 5<br />
<br />
The above command saves a dated {{ic|.png}} file, along with a thumbnail (20% of original), for Web posting. It provides a 5 second delay before capturing in this instance.<br />
<br />
You can also use standard date and time formatting when saving to a file. e.g.,<br />
$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png<br />
<br />
saves the screenshot in a filename with the current year, month, date, hours, minutes, and seconds to a folder in your home directory called "screenshots" <br />
<br />
See {{man|1|scrot}} for more information. You can simply automate the file to uploaded like so [https://github.com/kaihendry/Kai-s--HOME/tree/master/bin].<br />
<br />
{{Note|In some window managers ({{AUR|dwm}}, {{Pkg|xmonad}} and possibly others) {{ic|scrot -s}} does not work properly when running via window manager's keyboard shortcut, this can be worked around by prepending scrot invocation with a short pause {{ic|sleep 0.2; scrot -s}}.}}<br />
<br />
=== escrotum ===<br />
<br />
{{AUR|escrotum-git}} screen capture using pygtk, inspired by scrot<br />
<br />
Created because scrot has glitches when selection mode is used with refreshing windows.<br />
<br />
Because the command line interface its almost the same as scrot, can be used as a replacement of it.<br />
<br />
=== imlib2 ===<br />
<br />
{{Pkg|imlib2}} provides a binary {{ic|imlib2_grab}} to take screenshots. To take a screenshot of the full screen, type:<br />
$ imlib2_grab screenshot.png<br />
<br />
Note that {{Pkg|scrot}} actually uses {{ic|imlib2}}.<br />
<br />
=== maim ===<br />
<br />
{{Pkg|maim}} is aimed to be an improved scrot.<br />
<br />
Takes screenshots of your desktop using [https://github.com/naelstrof/slop slop] for regions. It's meant to overcome shortcomings of scrot.<br />
<br />
=== FFmpeg ===<br />
<br />
[[FFmpeg]] provides an x11grab device that allows the screen to be captured in X11.<br />
<br />
Take a screenshot on a ''width'' x ''height'' display:<br />
<br />
$ ffmpeg -f x11grab -video_size ''width''x''height'' -i $DISPLAY -vframes 1 screen.png<br />
<br />
Here, the PNG codec is used as it's lossless and suitable for screenshots, but any image codec can be used.<br />
<br />
The same device allows for screencasting (on a display with a refresh rate of ''rate'' HZ):<br />
<br />
$ ffmpeg -f x11grab -video_size ''width''x''height'' -framerate ''rate'' -i $DISPLAY -c:v libx264 -preset ultrafast cast.mkv<br />
<br />
Here, the x264 codec with the fastest possible encoding speed is used. Other codecs can be used; if writing each frame is too slow (either due to inadequate disk performance or slow encoding), then frames will be dropped and video output will be choppy.<br />
<br />
=== Weston ===<br />
<br />
In the [[Wayland#Weston|Weston]] Wayland compositor, screenshots can be taking by pressing {{ic|Super+s}}, which are stored in Weston's current working directory. Screencasts are also supported; recording is started and stopped by pressing {{ic|Super+r}}, which will create a file called {{ic|capture.wcap}} in Weston's current working directory. The capture can be decoded to YUV format by running {{ic|wcap-decode --yuv4mpeg2 capture.wcap}}; the output of this command can be written to a file or piped into FFmpeg for further processing.<br />
<br />
== Details: desktop environment specific ==<br />
<br />
=== Spectacle ===<br />
<br />
If you use [[KDE]], you might want to use {{ic|Spectacle}}.<br />
<br />
Spectacle is provided by the {{Pkg|spectacle}}.<br />
<br />
=== Xfce Screenshooter ===<br />
<br />
If you use [[Xfce]] you can install {{Pkg|xfce4-screenshooter}} and then add a keyboard binding:<br />
<br />
''Xfce Menu > Settings > Keyboard > Application Shortcuts''<br />
<br />
If you want to skip the Screenshot prompt, type {{ic|$ xfce4-screenshooter -h}} in terminal for the options.<br />
<br />
=== GNOME ===<br />
<br />
[[GNOME]] users can press {{ic|Prnt Scr}} or ''Apps > Accessories > Take Screenshot''. You may need to install {{Pkg|gnome-screenshot}}.<br />
<br />
=== Cinnamon ===<br />
The default installation of [[Cinnamon]] does not provide a screenshot utility. Installing {{Pkg|gnome-screenshot}} will enable screenshots through the ''Menu > Accessories > Screenshot'' or by pressing {{ic|Prnt Scr}}.<br />
<br />
=== Other desktop environments or window managers ===<br />
<br />
For other desktop environments such as [[LXDE]] or window managers such as [[Openbox]] and [[Compiz]], one can add the above commands to the hotkey to take the screenshot. For example,<br />
$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png<br />
Adding the above command to the {{ic|Prnt Scr}} key to Compiz allows to take the screenshot to the Pictures folder according to date and time.<br />
Notice that the {{ic|rc.xml}} file in Openbox does not understand commas; so, in order to bind that command to the {{ic|Prnt Scr}} key in Openbox, you need to add the following to the keyboard section of your {{ic|rc.xml}} file:<br />
<br />
{{hc|rc.xml|<nowiki><br />
<!-- Screenshot --><br />
<keybind key="Print"><br />
<action name="Execute"><br />
<command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command><br />
</action><br />
</keybind><br />
</nowiki>}}<br />
<br />
If the {{ic|Print}} above does not work, see [[Extra keyboard keys]] and use different ''keysym'' or ''keycode''.<br />
<br />
== Terminal ==<br />
<br />
=== Output with ansi codes ===<br />
<br />
You can use the {{ic|script}} command, part of the {{Pkg|util-linux}} package.<br />
Just enter {{ic|$ script}} and from that moment, all the output is going to be saved to the {{ic|typescript}} file, including the ansi codes.<br />
<br />
Once you are done, just type {{ic|exit}} and the {{ic|typescript}} would ready. The resulting file can be converted to html using the package {{AUR|ansi2html}}, from the [[AUR]].<br />
<br />
To convert the {{ic|typescript}} file to {{ic|typescript.html}}, do the following:<br />
<br />
$ ansi2html --bg=dark < typescript > typescript.html<br />
<br />
Actually, '''some''' commands can be piped directly to ansi2html:<br />
<br />
$ ls --color|ansi2html --bg=dark >output.html<br />
<br />
That does not work on every single case, so in those cases, using {{ic|script}} is mandatory.<br />
<br />
=== Virtual console ===<br />
<br />
Install a [[framebuffer]] and use {{AUR|fbgrab}} or {{AUR|fbdump}} to take a screenshot.<br />
<br />
If you merely want to capture the text in the console and not an actual image, you can use {{ic|setterm}}, which is part of the {{Pkg|util-linux}} package. The following command will dump the textual contents of virtual console 1 to a file screen.dump in the current directory:<br />
# setterm -dump 1 -file screen.dump<br />
<br />
Root permission is needed because the contents of {{ic|/dev/vcs1}} need to be read.</div>Milkhttps://wiki.archlinux.org/index.php?title=Screen_capture&diff=517531Screen capture2018-04-15T02:16:28Z<p>Milk: refactored subshell use to make it a oneliner, added dual window/area selection option</p>
<hr />
<div>[[Category:Image manipulation]]<br />
[[cs:Taking a screenshot]]<br />
[[es:Taking a screenshot]]<br />
[[fr:Capture d'écran]]<br />
[[ja:スクリーンショットの取得]]<br />
[[ru:Taking a screenshot]]<br />
[[zh-hans:Taking a screenshot]]<br />
{{Related articles start}}<br />
{{Related|Extra keyboard keys}}<br />
{{Related articles end}}<br />
This article explains different methods to take [[Wikipedia:Screenshot|screenshots]] on your system.<br />
<br />
== Dedicated software ==<br />
<br />
* {{App|Deepin Screenshot|A quite easy-to-use screenshot tool. Features: global hotkey to trigger screenshot tool, take screenshot of a selected area, easy to add text and line drawings onto the screenshot. Python/Qt5 based.|https://www.deepin.org/|{{Pkg|deepin-screenshot}}}}<br />
* {{App|Escrotum|Screen capture using pygtk, inspired by scrot.|https://github.com/Roger/escrotum|{{AUR|escrotum-git}}}}<br />
* {{App|Flameshot|QT5 based software for interactive screenshot taking. Select the desired area, draw with different tools and enjoy the customization capabilities.|https://github.com/lupoDharkael/flameshot|{{Pkg|flameshot}}}}<br />
* {{App|gnome-screenshot|Despite its name its dependencies are only dconf, gtk3, and libcanberra.|http://gnome.org|{{Pkg|gnome-screenshot}}}}<br />
* {{App|gscreenshot|Simple GTK screenshot utility with delays, selection, and copy-to-clipboard functionality.|https://github.com/thenaterhood/gscreenshot|{{AUR|gscreenshot}}}}<br />
* {{App|imgur-screenshot|Take screenshot selection, upload to [http://imgur.com imgur]. + more cool things|https://github.com/jomo/imgur-screenshot|{{AUR|imgur-screenshot-git}}}}<br />
* {{App|KShare|A ShareX inspired cross platform utility written with Qt.|https://kshare.arsenarsen.com|{{AUR|kshare}}}}<br />
* {{App|Lightscreen|Lightscreen is a simple tool to automate the tedious process of saving and cataloging screenshots, it operates as a hidden background process that is invoked with one (or multiple) hotkeys and then saves a screenshot file to disk according to the user's preferences.|http://lightscreen.com.ar|{{AUR|lightscreen}}}}<br />
* {{App|maim|A simple command line utility that takes screenshots. It's meant to replace scrot and performs better than scrot in many ways.|https://github.com/naelstrof/maim|{{Pkg|maim}}}}<br />
* {{App|screencloud| allows you to take a screenshot of the entire screen or to select an area and then uploading the screenshot to [http://imgur.com imgur]+auth. has plugins and system tray. |http://screencloud.net/|{{AUR|screencloud}}}}<br />
* {{App|screengrab|Cross-platform application designed to quickly take screenshots (Qt).|http://screengrab.doomer.org/|{{AUR|screengrab}}}}<br />
* {{App|[[Wikipedia:Scrot|Scrot]]|Simple command-line screenshot utility for X.|http://freecode.com/projects/scrot|{{Pkg|scrot}}}}<br />
* {{App|Shutter|Rich screenshot and editing program. Supports [https://hyp.is/AVQUNTRUH9ZO4OKSlue9/askubuntu.com/questions/252281/how-do-i-take-screenshots-with-a-delay/260178 delay]. |http://shutter-project.org/|{{AUR|shutter}}}}<br />
* {{App|Spectacle|[[KDE]] application for taking screenshots. It is capable of capturing images of the whole desktop, a single window, a section of a window, a selected rectangular region or a freehand region. Part of {{Grp|kdegraphics}}.|https://github.com/KDE/spectacle/|{{Pkg|spectacle}}}}<br />
* {{App|Xfce4 Screenshooter|This application allows you to capture the entire screen, the active window or a selected region. You can set the delay that elapses before the screenshot is taken and the action that will be done with the screenshot: save it to a PNG file, copy it to the clipboard, open it using another application, or host it on free online image hosting services Imgur and ZimageZ. Part of {{Grp|xfce4-goodies}}.|http://goodies.xfce.org/projects/applications/xfce4-screenshooter|{{Pkg|xfce4-screenshooter}}}}<br />
* {{App|xwd|X Window System image dumping utility|http://xorg.freedesktop.org/|{{Pkg|xorg-xwd}}}}<br />
<br />
== Packages including a screenshot utility ==<br />
<br />
* {{App|[[Wikipedia:GIMP|GIMP]]|Image editing suite in the vein of proprietary editors such as [[Wikipedia:Adobe Photoshop|Adobe Photoshop]]. GIMP ([[GNU]] Image Manipulation Program) has been started in the mid 1990s and has acquired a large number of [[CMYK support in The GIMP|plugins]] and additional tools.|http://www.gimp.org/|{{Pkg|gimp}}}}<br />
* {{App|[[Wikipedia:GraphicsMagick|GraphicsMagick]]|Fork of ImageMagick designed to have API and command-line stability. It also supports multi-CPU for enhanced performance and thus is used by some large commercial sites (Flickr, etsy) for its performance.|http://www.graphicsmagick.org/|{{Pkg|graphicsmagick}}}}<br />
* {{App|[[Wikipedia:ImageMagick|ImageMagick]]|Command-line image manipulation program. It is known for its accurate format conversions with support for over 100 formats. Its API enables it to be scripted and it is usually used as a backend processor.|http://www.imagemagick.org/script/index.php|{{Pkg|imagemagick}}}}<br />
* {{App|Imlib2|Library that does image file loading and saving as well as rendering, manipulation, arbitrary polygon support.|http://sourceforge.net/projects/enlightenment/|{{Pkg|imlib2}}}}<br />
* {{App|MATE Utils|Common MATE utilities for viewing disk usage, logs and fonts, taking screenshots, managing dictionaries and searching files.|http://mate-desktop.org|{{Pkg|mate-utils}}}}<br />
<br />
== Details: general methods ==<br />
<br />
=== ImageMagick/GraphicsMagick ===<br />
<br />
An easy way to take a screenshot of your current system is using the {{ic|import}} command:<br />
$ import -window root screenshot.jpg<br />
<br />
{{ic|import}} is part of the {{Pkg|imagemagick}} package.<br />
<br />
Running {{ic|import}} without the {{ic|-window}} option allows selecting a window or an arbitrary region interactively.<br />
<br />
{{Note|If you prefer '''graphicsmagick''' alternative, just prepend "gm", e.g. {{ic|$ gm import -window root screenshot.jpg}}.}}<br />
<br />
==== Screenshot of multiple X screens ====<br />
<br />
If you run twinview or dualhead, simply take the screenshot twice and use {{Ic|imagemagick}} to paste them together:<br />
{{bc|<br />
import -window root -display :0.0 -screen /tmp/0.png<br />
import -window root -display :0.1 -screen /tmp/1.png<br />
convert +append /tmp/0.png /tmp/1.png screenshot.png<br />
rm /tmp/{0,1}.png<br />
}}<br />
<br />
==== Screenshot of individual Xinerama heads ====<br />
<br />
Xinerama-based multi-head setups have only one virtual screen. If the physical screens are different in height, you will find dead space in the screenshot. In this case, you may want to take screenshot of each physical screen individually. As long as Xinerama information is available from the X server, the following will work:<br />
{{bc|<nowiki><br />
#!/bin/sh<br />
xdpyinfo -ext XINERAMA | sed '/^ head #/!d;s///' |<br />
while IFS=' :x@,' read i w h x y; do<br />
import -window root -crop ${w}x$h+$x+$y head_$i.png<br />
done<br />
</nowiki>}}<br />
<br />
==== Screenshot of the active/focused window ====<br />
<br />
The following script takes a screenshot of the currently focused window. It works with EWMH/NetWM compatible X Window Managers. To avoid overwriting previous screenshots, the current date is used as the filename.<br />
$ import -window `xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | echo ${activeWinLine:40}` /tmp/$(date +%F_%H%M%S_%N).png<br />
<br />
Alternatively, the following should work regardless of EWMH support:<br />
$ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png<br />
<br />
Further, the following gives a selection mouse pointer; click a window to capture it, or click and drag to manually select an area;<br />
$ import /tmp/$(date +%F_%H%M%S_%N).png<br />
<br />
{{Note|If screenshots of some programs (dwb and zathura) appear blank, try appending {{ic|-frame}} or removing {{ic|-f}} from the {{ic|xdotool}} command.}}<br />
<br />
=== GIMP ===<br />
<br />
You also can take screenshots with GIMP (''File > Create > Screenshot''...).<br />
<br />
=== xwd ===<br />
<br />
Take a screenshot of the root window:<br />
$ xwd -root -out screenshot.xwd<br />
<br />
{{Note|The methods for taking shots of active windows with {{ic|import}} can also be used with {{ic|xwd}}.}}<br />
<br />
=== scrot ===<br />
<br />
{{Pkg|scrot}} enables taking screenshots from the CLI and offers features such as a user-definable time delay. Unless instructed otherwise, it saves the file in the current working directory.<br />
$ scrot -t 20 -d 5<br />
<br />
The above command saves a dated {{ic|.png}} file, along with a thumbnail (20% of original), for Web posting. It provides a 5 second delay before capturing in this instance.<br />
<br />
You can also use standard date and time formatting when saving to a file. e.g.,<br />
$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png<br />
<br />
saves the screenshot in a filename with the current year, month, date, hours, minutes, and seconds to a folder in your home directory called "screenshots" <br />
<br />
See {{man|1|scrot}} for more information. You can simply automate the file to uploaded like so [https://github.com/kaihendry/Kai-s--HOME/tree/master/bin].<br />
<br />
{{Note|In some window managers ({{AUR|dwm}}, {{Pkg|xmonad}} and possibly others) {{ic|scrot -s}} does not work properly when running via window manager's keyboard shortcut, this can be worked around by prepending scrot invocation with a short pause {{ic|sleep 0.2; scrot -s}}.}}<br />
<br />
=== escrotum ===<br />
<br />
{{AUR|escrotum-git}} screen capture using pygtk, inspired by scrot<br />
<br />
Created because scrot has glitches when selection mode is used with refreshing windows.<br />
<br />
Because the command line interface its almost the same as scrot, can be used as a replacement of it.<br />
<br />
=== imlib2 ===<br />
<br />
{{Pkg|imlib2}} provides a binary {{ic|imlib2_grab}} to take screenshots. To take a screenshot of the full screen, type:<br />
$ imlib2_grab screenshot.png<br />
<br />
Note that {{Pkg|scrot}} actually uses {{ic|imlib2}}.<br />
<br />
=== maim ===<br />
<br />
{{Pkg|maim}} is aimed to be an improved scrot.<br />
<br />
Takes screenshots of your desktop using [https://github.com/naelstrof/slop slop] for regions. It's meant to overcome shortcomings of scrot.<br />
<br />
=== FFmpeg ===<br />
<br />
[[FFmpeg]] provides an x11grab device that allows the screen to be captured in X11.<br />
<br />
Take a screenshot on a ''width'' x ''height'' display:<br />
<br />
$ ffmpeg -f x11grab -video_size ''width''x''height'' -i $DISPLAY -vframes 1 screen.png<br />
<br />
Here, the PNG codec is used as it's lossless and suitable for screenshots, but any image codec can be used.<br />
<br />
The same device allows for screencasting (on a display with a refresh rate of ''rate'' HZ):<br />
<br />
$ ffmpeg -f x11grab -video_size ''width''x''height'' -framerate ''rate'' -i $DISPLAY -c:v libx264 -preset ultrafast cast.mkv<br />
<br />
Here, the x264 codec with the fastest possible encoding speed is used. Other codecs can be used; if writing each frame is too slow (either due to inadequate disk performance or slow encoding), then frames will be dropped and video output will be choppy.<br />
<br />
=== Weston ===<br />
<br />
In the [[Wayland#Weston|Weston]] Wayland compositor, screenshots can be taking by pressing {{ic|Super+s}}, which are stored in Weston's current working directory. Screencasts are also supported; recording is started and stopped by pressing {{ic|Super+r}}, which will create a file called {{ic|capture.wcap}} in Weston's current working directory. The capture can be decoded to YUV format by running {{ic|wcap-decode --yuv4mpeg2 capture.wcap}}; the output of this command can be written to a file or piped into FFmpeg for further processing.<br />
<br />
== Details: desktop environment specific ==<br />
<br />
=== Spectacle ===<br />
<br />
If you use [[KDE]], you might want to use {{ic|Spectacle}}.<br />
<br />
Spectacle is provided by the {{Pkg|spectacle}}.<br />
<br />
=== Xfce Screenshooter ===<br />
<br />
If you use [[Xfce]] you can install {{Pkg|xfce4-screenshooter}} and then add a keyboard binding:<br />
<br />
''Xfce Menu > Settings > Keyboard > Application Shortcuts''<br />
<br />
If you want to skip the Screenshot prompt, type {{ic|$ xfce4-screenshooter -h}} in terminal for the options.<br />
<br />
=== GNOME ===<br />
<br />
[[GNOME]] users can press {{ic|Prnt Scr}} or ''Apps > Accessories > Take Screenshot''. You may need to install {{Pkg|gnome-screenshot}}.<br />
<br />
=== Cinnamon ===<br />
The default installation of [[Cinnamon]] does not provide a screenshot utility. Installing {{Pkg|gnome-screenshot}} will enable screenshots through the ''Menu > Accessories > Screenshot'' or by pressing {{ic|Prnt Scr}}.<br />
<br />
=== Other desktop environments or window managers ===<br />
<br />
For other desktop environments such as [[LXDE]] or window managers such as [[Openbox]] and [[Compiz]], one can add the above commands to the hotkey to take the screenshot. For example,<br />
$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png<br />
Adding the above command to the {{ic|Prnt Scr}} key to Compiz allows to take the screenshot to the Pictures folder according to date and time.<br />
Notice that the {{ic|rc.xml}} file in Openbox does not understand commas; so, in order to bind that command to the {{ic|Prnt Scr}} key in Openbox, you need to add the following to the keyboard section of your {{ic|rc.xml}} file:<br />
<br />
{{hc|rc.xml|<nowiki><br />
<!-- Screenshot --><br />
<keybind key="Print"><br />
<action name="Execute"><br />
<command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command><br />
</action><br />
</keybind><br />
</nowiki>}}<br />
<br />
If the {{ic|Print}} above does not work, see [[Extra keyboard keys]] and use different ''keysym'' or ''keycode''.<br />
<br />
== Terminal ==<br />
<br />
=== Output with ansi codes ===<br />
<br />
You can use the {{ic|script}} command, part of the {{Pkg|util-linux}} package.<br />
Just enter {{ic|$ script}} and from that moment, all the output is going to be saved to the {{ic|typescript}} file, including the ansi codes.<br />
<br />
Once you are done, just type {{ic|exit}} and the {{ic|typescript}} would ready. The resulting file can be converted to html using the package {{AUR|ansi2html}}, from the [[AUR]].<br />
<br />
To convert the {{ic|typescript}} file to {{ic|typescript.html}}, do the following:<br />
<br />
$ ansi2html --bg=dark < typescript > typescript.html<br />
<br />
Actually, '''some''' commands can be piped directly to ansi2html:<br />
<br />
$ ls --color|ansi2html --bg=dark >output.html<br />
<br />
That does not work on every single case, so in those cases, using {{ic|script}} is mandatory.<br />
<br />
=== Virtual console ===<br />
<br />
Install a [[framebuffer]] and use {{AUR|fbgrab}} or {{AUR|fbdump}} to take a screenshot.<br />
<br />
If you merely want to capture the text in the console and not an actual image, you can use {{ic|setterm}}, which is part of the {{Pkg|util-linux}} package. The following command will dump the textual contents of virtual console 1 to a file screen.dump in the current directory:<br />
# setterm -dump 1 -file screen.dump<br />
<br />
Root permission is needed because the contents of {{ic|/dev/vcs1}} need to be read.</div>Milkhttps://wiki.archlinux.org/index.php?title=LXDM&diff=515039LXDM2018-03-27T04:31:06Z<p>Milk: add link</p>
<hr />
<div>[[Category:Display managers]]<br />
[[it:LXDM]]<br />
[[ja:LXDM]]<br />
[[zh-hans:LXDM]]<br />
{{Related articles start}}<br />
{{Related|LXDE}}<br />
{{Related|Display manager}}<br />
{{Related articles end}}<br />
<br />
LXDM is a lightweight [[display manager]] for the [[LXDE]] [[desktop environment]]. The UI is implemented with [[GTK+]] 2.<br />
<br />
LXDM does not support the [[XDMCP]] protocol. An alternative that does is [[LightDM]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|lxdm}} package. The development package is {{AUR|lxdm-git}}.<br />
<br />
{{Pkg|lxdm}} provides the {{ic|lxdm}} [[systemd]] service. [[Enable]] it to start LXDM at boot.<br />
<br />
== Configuration ==<br />
<br />
The configuration files for LXDM are all located in {{ic|/etc/lxdm/}}. The main configuration file is {{ic|lxdm.conf}}, and is well documented in its comments. Another file, {{ic|Xsession}}, is the systemwide x session configuration file and should generally not be edited. The other files in this folder are all shell scripts, which are run when certain events happen in LXDM.<br />
<br />
These are:<br />
# {{ic|LoginReady}} is executed with root privileges when LXDM is ready to show the login window.<br />
# {{ic|PreLogin}} is run as root before logging a user in.<br />
# {{ic|PostLogin}} is run as the logged-in user right after he has logged in.<br />
# {{ic|PostLogout}} is run as the logged-in user right after he has logged out.<br />
# {{ic|PreReboot}} is run as root before rebooting with LXDM.<br />
# {{ic|PreShutdown}} is run as root before poweroff with LXDM.<br />
<br />
=== Default session ===<br />
<br />
It can be specified which session will be loaded when the users select the 'Default' session from the session list. Note that the user setting takes preference over global setting.<br />
<br />
==== Globally ====<br />
<br />
Edit {{ic|/etc/lxdm/lxdm.conf}} and change the session line to whatever session or DE is desired:<br />
<br />
{{bc|1=session=/usr/bin/startlxde}}<br />
<br />
Example using [[Xfce]]:<br />
{{bc|1=session=/usr/bin/startxfce4}}<br />
<br />
Example using [[Openbox]]:<br />
{{bc|1=session=/usr/bin/openbox-session}}<br />
<br />
Example using [[GNOME]]:<br />
{{bc|1=session=/usr/bin/gnome-session}}<br />
<br />
This is useful for themes that have no visible session selection box, and if experiencing trouble using autologin.<br />
<br />
==== Per user ====<br />
<br />
To define an individual user's preferred session, simply edit his/her respective {{ic|~/.dmrc}} to define the selection.<br />
<br />
Example: user1 wants Xfce4, user2 wants [[Cinnamon]], and user3 wants GNOME:<br />
<br />
For user1:<br />
[Desktop]<br />
Session=xfce<br />
<br />
For user2:<br />
[Desktop]<br />
Session=cinnamon<br />
<br />
For user3:<br />
[Desktop]<br />
Session=gnome<br />
<br />
=== Autologin ===<br />
<br />
To log in to one account automatically on startup, without providing a password, find the line in {{ic|/etc/lxdm/lxdm.conf}} that looks like this:<br />
#autologin=dgod<br />
Uncomment it, substituting the target user instead of ''dgod''.<br />
<br />
=== Last used options ===<br />
<br />
It stores information about last used options in the:<br />
<br />
{{hc|/var/lib/lxdm/lxdm.conf|2=<br />
[base]<br />
last_session=/usr/share/xsessions/LXDE.desktop<br />
last_lang=sv_SE.UTF-8<br />
last_langs=sv_SE.UTF-8 fa_IR.UTF-8 en_US.UTF-8}}<br />
<br />
{{Note|This file is not removed after uninstallation. And must be removed manually if you want to remove all traces of LXDM used options.}}<br />
<br />
== Tips and tricks ==<br />
<br />
=== Adding face icons ===<br />
<br />
A 96x96 px image (jpg or png) can optionally be displayed on a per-user basis replacing the stock icon. Simply copy or symlink the target image to {{ic|$HOME/.face}}. The {{Pkg|gnome-control-center}} package supplies some default icons suitable for the lxdm screen. Look under {{ic|/usr/share/pixmaps/faces}} after installing that package.<br />
<br />
{{Note|Users need not keep {{Pkg|gnome-control-center}} installed to use this images. Simply install it, copy them elsewhere, and remove it.}}<br />
<br />
{{Note|The user's directory needs have r-x permissions for others and the .face file needs have r-- permissions for others. Obviously though this has security and access implications as now anyone can browse your home directory.}}<br />
<br />
{{Note|A graphical tool {{ic|lxdm-config}} shipped with lxdm can be used to place a {{ic|.face}} file in the home directory, along with other configuration.}}<br />
<br />
=== Simultaneous users and switching users ===<br />
<br />
LXDM allows multiple users to be logged into different ttys at the same time. The following command is used to allow another user to login without logging out the current user:<br />
<br />
$ lxdm -c USER_SWITCH<br />
<br />
{{Note|When the new user logs in, his/her session is now on the NEXT tty from tty7. For example, user1 logs in and issues the USER_SWITCH command. Now user2 logs in. User2 will be on tty7 while user1 will be on tty1.}}<br />
<br />
=== Themes ===<br />
<br />
The LXDM themes are located in {{ic|/usr/share/lxdm/themes}}.<br />
<br />
There is only one theme provided with LXDM, namely Industrial. To display the background file {{ic|wave.svg}} which is part of this theme, make sure you have {{Pkg|librsvg}} installed.<br />
<br />
{{AUR|lxdm-themes}} provides 6 extra themes. Archlinux, ArchlinuxFull, ArchlinuxTop, Arch-Dark, Arch-Stripes and IndustrialArch. The ArchStripes and ArchDark themes are also provided with {{AUR|lxdm-git}} (with different names to avoid file conflicts).<br />
<br />
You can configure them on {{ic|/etc/lxdm/lxdm.conf}}:<br />
<br />
## the theme of greeter<br />
theme=theme_name<br />
<br />
You can also configure LXDM to use a GTK theme (stored in {{ic|/usr/share/themes}}) on the mentioned configuration file:<br />
<br />
## GTK theme<br />
gtk_theme=gtk_theme_name<br />
<br />
=== Advanced Session Configuration ===<br />
<br />
After a user logs on, LXDM sources ''all'' of the following files, in order:<br />
<br />
# {{ic|/etc/profile}}<br />
# {{ic|~/.profile}}<br />
# {{ic|/etc/xprofile}}<br />
# {{ic|~/.xprofile}}<br />
<br />
These files can be used to set session environment variables and to start services which must set certain environment variables in order for clients in the session to be able to use the service, like ssh-agent. See [[Xprofile]] for details.<br />
<br />
Note that LXDM does ''not'' source {{ic|~/.xinitrc}}, so those migrating from a DM that ''does'' use this file, like [[SLiM]], will have to move their settings elsewhere — probably {{ic|~/.xprofile}}. Also note LXDM does not source {{ic|~/.bash_profile}}.<br />
<br />
If you still want to use your {{ic|~/.xinitrc}} file, you can add a line to the {{ic|/etc/lxdm/PostLogin}} event file:<br />
<br />
source ~/.xinitrc<br />
<br />
LXDM also makes use of .[[Xresources]], .[[Xkbmap]], and .[[Xmodmap]]. See {{ic|/etc/lxdm/Xsession}} for details on how LXDM uses system-wide and per-user configuration files to configure the session.[https://projects.archlinux.org/svntogit/community.git/tree/trunk/Xsession?h=packages/lxdm]<br />
<br />
=== Flash fix for dark backgrounds ===<br />
<br />
When using the default LXDM '''theme=Industrial''' and a custom dark or even black background image '''bg=/usr/share/backgrounds/img.png''' there may be a short bright flash before LXDM starts. This is caused by the '''bg_color:''' property of the selected theme. To avoid this change '''gtk_theme=Adwaita''' to Adwaita-dark or to another dark theme for a no flash smooth dark transition to and from LXDM.</div>Milkhttps://wiki.archlinux.org/index.php?title=User:Milk/Other_wikis&diff=514847User:Milk/Other wikis2018-03-25T01:19:57Z<p>Milk: crated the page, to benefit those interested in browsing related wikis</p>
<hr />
<div>Aside from the [[ArchWiki:About|ArchWiki]], there are a number of other wikis featuring information relating to the use of Linux distributions and software.<br />
<br />
== Linux distributions ==<br />
=== Arch-based ===<br />
* [https://wiki.manjaro.org/index.php?title=Main_Page Manjaro Linux]<br />
<br />
* [https://antergos.com/wiki/ Antergos Community Wiki]<br />
<br />
* [https://wiki.chakralinux.org/ Chakra Wiki]<br />
<br />
* [http://bbqlinux.org/ BBQLinux] - a user-friendly Linux distribution made for Android developers.<br />
<br />
=== Other ===<br />
* [https://wiki.gentoo.org Gentoo Wiki]<br />
* [https://wiki.installgentoo.com/index.php/Main_Page InstallGentoo Wiki] - the /g/ wiki<br />
<br />
* [https://fedoraproject.org/wiki/Fedora_Project_Wiki Fedora Project Wiki]<br />
<br />
* [https://wiki.debian.org Debian Wiki] - a support and documentation resource for the Debian project<br />
<br />
* [https://wiki.ubuntu.com Ubuntu Wiki]<br />
<br />
* [https://wiki.mageia.org/en/Main_Page Mageia wiki]<br />
<br />
* [https://wiki.voidlinux.eu/Main_Page Void Linux Wiki] - a knowledge database created and maintained by Void users.<br />
<br />
* [http://www.bodhilinux.com/w/wiki/ Bodhi Linux Wiki]<br />
<br />
* [https://wiki.centos.org/ FrontPage - CentOS Wiki]<br />
<br />
* [https://wiki.alpinelinux.org/wiki/Main_Page Alpine Linux] - a security-oriented, lightweight distribution based on musl libc and Busybox.<br />
<br />
* [https://web.archive.org/web/20170919031129/http://www.damnsmalllinux.org:80/wiki/ Damn Small Linux Wiki] (archive.org'd)<br />
<br />
== Unix distributions ==<br />
* [https://wiki.netbsd.org/ NetBSD Wiki] - a place where NetBSD developers can write or host less formal content, experiment with converting the existing website into a new CMS, and get content published immediately about anything they happen to be doing.<br />
<br />
== Miscellaneous ==<br />
* [https://en.wikibooks.org/wiki/Main_Page Wikibooks] - the open-content textbooks collection that anyone can edit.<br />
** [https://en.wikibooks.org/wiki/Guide_to_X11 Guide to X11 - Wikibooks, open books for an open world] - Wikibooks Guide to X11<br />
<br />
* Wikia: [http://linux.wikia.com Linux Wiki] - "designed to expand topics on Linux, that may not be sufficiently notable for Wikipedia."<br />
<br />
* Wikia: [http://unix.wikia.com/wiki/Unix_Wiki Unix Wiki] - "Got a nice one-liner or tips? Put them here!"<br />
<br />
* [https://wiki.linuxfoundation.org/ Linux Foundation Wiki] - "provides a space for Linux Foundation projects to share documentation and governance information."<br />
<br />
* [https://wiki.linuxaudio.org/wiki/start Linux Audio Wiki] - the exhaustive reference for all things Linux Audio!<br />
<br />
* [https://elinux.org/Main_Page eLinux.org] - information about the development and use of Linux in embedded systems as well as open source projects and tools for general embedded development<br />
<br />
* [https://wiki.gsi.de/foswiki/bin/view/ GSI Wiki]<br />
<br />
* [https://nethackwiki.com/wiki/Main_Page NetHackWiki, the NetHack wiki] - free community web site for the game NetHack that anyone can edit.<br />
<br />
* [https://wiki.thingsandstuff.org/*nix Things and Stuff Wiki: *nix] - a personal notes wiki</div>Milkhttps://wiki.archlinux.org/index.php?title=USB_flash_installation_medium&diff=512979USB flash installation medium2018-03-08T02:47:10Z<p>Milk: /* In GNU/Linux */ fx list fmt.</p>
<hr />
<div>[[Category:Getting and installing Arch]]<br />
[[ar:USB flash installation media]]<br />
[[bg:USB flash installation media]]<br />
[[de:Installation von einem USB-Stick]]<br />
[[es:USB flash installation media]]<br />
[[fr:Créer une clef USB avec l'ISO Arch Linux]]<br />
[[it:USB flash installation media]]<br />
[[ja:USB インストールメディア]]<br />
[[ro:Instalare prin USB]]<br />
[[ru:USB flash installation media]]<br />
[[zh-hans:USB flash installation media]]<br />
[[zh-hant:USB flash installation media]]<br />
{{Related articles start}}<br />
{{Related|CD Burning}}<br />
{{Related|Archiso}}<br />
{{Related|Multiboot USB drive}}<br />
{{Related articles end}}<br />
<br />
This page discusses various multi-platform methods on how to create an Arch Linux Installer USB drive (also referred to as ''"flash drive", "USB stick", "USB key"'', etc) for booting in BIOS and UEFI systems. The result will be a LiveUSB (LiveCD-like) system that can be used for installing Arch Linux, system maintenance or for recovery purposes, and that, because of the nature of [[Wikipedia:SquashFS|SquashFS]], will discard all changes once the computer shuts down.<br />
<br />
If you would like to run a full install of Arch Linux from a USB drive (i.e. with persistent settings), see [[Installing Arch Linux on a USB key]]. If you would like to use your bootable Arch Linux USB stick as a rescue USB, see [[Change root]].<br />
<br />
== BIOS and UEFI bootable USB ==<br />
<br />
=== Using dd ===<br />
{{Note|This method is recommended due to its simplicity. If it does not work, switch to the alternative method [[#Using manual formatting]] below.}}<br />
<br />
{{Warning|This will irrevocably destroy all data on {{ic|/dev/'''sdx'''}}. To restore the USB drive as an empty, usable storage device after using the Arch ISO image, the iso9660 filesystem signature needs to be removed by running {{ic|wipefs --all /dev/'''sdx'''}} as root, before [[repartition]]ing and [[reformat]]ing the USB drive.}}<br />
<br />
==== In GNU/Linux ====<br />
<br />
{{Tip|Find out the name of your USB drive with {{ic|lsblk}}. Make sure that it is '''not''' mounted.}}<br />
<br />
Run the following command, replacing {{ic|/dev/'''sdx'''}} with your drive, e.g. {{ic|/dev/sdb}}. (Do '''not''' append a partition number, so do '''not''' use something like {{ic|/dev/sdb'''1'''}})<br />
<br />
# dd bs=4M if=/path/to/archlinux.iso of=/dev/'''sdx''' status=progress oflag=sync<br />
<br />
See [[Core utilities#dd]] for more information about {{ic|dd}}. See {{man|1|dd|DESCRIPTION}} for more information about {{ic|<nowiki>oflag=sync</nowiki>}}.<br />
<br />
==== In Windows ====<br />
<br />
===== Using Rufus ===== <br />
[https://rufus.akeo.ie/ Rufus] is a multi-purpose USB iso writer. Simply select the Arch Linux ISO, the USB drive you want to create the bootable Arch Linux onto and click start.<br />
<br />
Since Rufus does not care if the drive is properly formatted or not and provides a GUI it may be the easiest and most robust tool to use.<br />
<br />
{{Note|Be sure to select '''DD image''' mode from the dropdown menu or the image will be transferred incorrectly.}}<br />
<br />
===== Using USBwriter =====<br />
<br />
This method does not require any workaround and is as straightforward as {{ic|dd}} under Linux. Just download the Arch Linux ISO, and with local administrator rights use the [http://sourceforge.net/p/usbwriter/wiki/Documentation/ USBwriter] utility to write to your USB flash memory.<br />
<br />
===== Using win32diskimager =====<br />
<br />
[https://sourceforge.net/projects/win32diskimager/ win32diskimager] is another graphical USB iso writing tool for Windows. Simply select your iso image and the target USB drive letter (you may have to format it first to assign it a drive letter), and click Write. <br />
<br />
===== Using Cygwin =====<br />
<br />
Make sure your [http://www.cygwin.com/ Cygwin] installation contains the {{ic|dd}} package.<br />
<br />
{{Tip|If you do not want to install Cygwin, you can download {{ic|dd}} for Windows from [http://www.chrysocome.net/dd here]. See the next section for more information.}}<br />
<br />
Place your image file in your home directory:<br />
<br />
C:\cygwin\home\John\<br />
<br />
Run cygwin as administrator (required for cygwin to access hardware). To write to your USB drive use the following command:<br />
<br />
dd if=image.iso of=\\.\'''x''': bs=4M<br />
<br />
where image.iso is the path to the iso image file within the {{ic|cygwin}} directory and {{ic|\\.\'''x''':}} is your USB flash drive where {{ic|'''x'''}} is the windows designated letter, e.g. {{ic|\\.\d:}}.<br />
<br />
On Cygwin 6.0, find out the correct partition with:<br />
<br />
cat /proc/partitions<br />
<br />
and write the ISO image with the information from the output. Example:<br />
<br />
{{Warning|This will irrevocably delete all files on your USB flash drive, so make sure you do not have any important files on the flash drive before doing this.}}<br />
<br />
dd if=image.iso of=/dev/sdb bs=4M<br />
<br />
===== dd for Windows =====<br />
<br />
A GPL licensed dd version for Windows is available at http://www.chrysocome.net/dd. The advantage of this over Cygwin is a smaller download. Use it as shown in instructions for Cygwin above.<br />
<br />
To begin, download the latest version of dd for Windows. Once downloaded, extract the archive's contents into Downloads or elsewhere.<br />
<br />
Now, launch your {{ic|command prompt}} as an administrator. Next, change directory ({{ic|cd}}) into the Downloads directory.<br />
<br />
If your Arch Linux ISO is elsewhere you may need to state the full path, for convenience you may wish to put the Arch Linux ISO into the same folder as the dd executable. The basic format of the command will look like this.<br />
<br />
# dd if=''archlinux-2017-XX-YY-x86_64.iso'' od=\\.\''x'': bs=4M<br />
<br />
{{Note|The Windows drive letters are linked to a partition. To allow selecting the entire disk, ''dd for Windows'' provides the {{ic|od}} parameter, which is used in the commands above. Note however that this parameter is specific to ''dd for Windows'' and cannot be found in other implementations of ''dd''.}}<br />
<br />
{{Warning|Because the {{ic|od}} is used, all partitions on the selected disk will be destroyed. Be absolutely sure that you are directing dd to the correct drive before executing.}}<br />
<br />
Simply replace the various null spots (indicated by an "x") with the correct date and correct drive letter. Here is a complete example.<br />
<br />
# dd if=ISOs\archlinux-2017.04.01-x86_64.iso od=\\.\d: bs=4M<br />
<br />
{{Accuracy|The following note may be invalid, the [http://www.chrysocome.net/dd upstream documentation] does not mention anything related to ''PhysicalDrive''.}}<br />
<br />
{{Note|Alternatively, replace the drive letter with {{ic|\\.\PhysicalDrive''X''}}, where {{ic|''X''}} is the physical drive number (starts from 0). Example:<br />
{{bc|1=# dd if=ISOs\archlinux-2017.04.01-x86_64.iso of=\\.\PhysicalDrive1 bs=4M}}<br />
You can find out the physical drive number by typing {{ic|wmic diskdrive list brief}} at the command prompt or with {{ic|dd --list}}<br />
Any Explorer window must be closed or dd will report an error.}}<br />
<br />
==== In macOS ====<br />
<br />
First, you need to identify the USB device. Open {{ic|/Applications/Utilities/Terminal}} and list all storage devices with the command:<br />
<br />
$ diskutil list<br />
<br />
Your USB device will appear as something like {{ic|/dev/disk2 (external, physical)}}. Verify that this is the device you want to erase by checking its name and size and then use its identifier for the commands below instead of /dev/diskX.<br />
<br />
A USB device is normally auto-mounted in macOS, and you have to unmount (not eject) it before block-writing to it with {{ic|dd}}. In Terminal, do:<br />
<br />
$ diskutil unmountDisk /dev/diskX<br />
<br />
Now copy the ISO image file to the device. The {{ic|dd}} command is similar to its Linux counterpart, but notice the 'r' before 'disk' for raw mode which makes the transfer much faster:<br />
<br />
# dd if=path/to/arch.iso of=/dev/'''r'''diskX bs=1m<br />
<br />
After completion, macOS may complain that "The disk you inserted was not readable by this computer". Select 'Ignore'. The USB device will be bootable.<br />
<br />
=== Using manual formatting===<br />
<br />
==== In GNU/Linux ====<br />
<br />
This method is more complicated than writing the image directly with {{ic|dd}}, but it does keep the flash drive usable for data storage (that is, the ISO is installed in a specific partition within the already [[Partitioning|partitioned device]] without altering other partitions).<br />
<br />
{{Note|Here, we will denote the targeted partition as {{ic|/dev/sd'''Xn'''}}. In any of the following commands, adjust '''X''' and '''n''' according to your system.}}<br />
<br />
* Make sure that the {{Pkg|syslinux}} package is installed on the system. <br />
<br />
* If not done yet, create the partition table and/or partition on the device before continuing. The partition {{ic|/dev/sd'''Xn'''}} must be formatted to [[FAT32]].<br />
<br />
* Mount the ISO image, mount the FAT32 filesystem located in the USB flash device, and copy the contents of the ISO image to it. Then unmount the ISO image, but keep the FAT32 partition mounted (this will be used in subsequent steps). Eg:<br />
# mkdir -p /mnt/{iso,usb}<br />
# mount -o loop archlinux-2017.04.01-x86_64.iso /mnt/iso<br />
# mount /dev/sd'''Xn''' /mnt/usb<br />
# cp -a /mnt/iso/* /mnt/usb<br />
# sync<br />
# umount /mnt/iso<br />
<br />
{{Note|The following step is not required when using [[Archboot]] instead of [[Archiso]].}} To boot either a label or an [[UUID]] to select the partition to boot from is required. By default the label {{ic|ARCH_2017'''XX'''}} (with the appropriate release month) is used. Thus, the partition’s label has to be set accordingly, for example using ''gparted''. Alternatively, you can change this behaviour by altering the lines ending by {{ic|1=archisolabel=ARCH_2017'''XX'''}} in the file {{ic|/mnt/usb/arch/boot/syslinux/archiso_sys.cfg}} (for BIOS boot), and in {{ic|/mnt/usb/loader/entries/archiso-x86_64.conf}} (for UEFI boot). To use an UUID instead, replace those portions of lines with {{ic|1=archiso''device''=/dev/disk/by-uuid/'''YOUR-UUID'''}}. The UUID can be retrieved with {{ic|1=blkid -o value -s UUID /dev/sd'''Xn'''}}.<br />
<br />
{{Warning|Mismatching labels or wrong UUID prevents booting from the created medium.}}<br />
<br />
Syslinux is already preinstalled in ''/mnt/usb/arch/boot/syslinux''. Install it completely to that folder by following [[Syslinux#Manual install]]. Instructions are reproduced here for convenience.<br />
* Overwrite the existing Syslinux modules ({{ic|*.c32}} files) present in the USB (from the ISO) with the ones from the syslinux package (found in ''/usr/lib/syslinux/bios''). This is necessary to avoid boot failure because of a possible version mismatch.<br />
# cp /usr/lib/syslinux/bios/*.c32 /mnt/usb/arch/boot/syslinux<br />
* Run:<br />
# extlinux --install /mnt/usb/arch/boot/syslinux<br />
* Unmount the partition ({{ic|umount /mnt/usb}}).<br />
<br />
* Mark the partition as active (or “bootable”).<br />
<br />
==== In Windows ====<br />
<br />
{{Note|<br />
* For manual formatting, do not use any '''Bootable USB Creator utility''' for creating the UEFI bootable USB. For manual formatting, do not use ''dd for Windows'' to dd the ISO to the USB drive either.<br />
<br />
* In the below commands, '''X:''' is assumed to be the USB flash drive in Windows.<br />
<br />
* Windows uses backward slash {{ic|\}} as path-separator, so the same is used in the below commands.<br />
<br />
* All commands should be run in Windows command prompt '''as administrator'''.<br />
<br />
* {{ic|>}} denotes the Windows command prompt.<br />
}}<br />
<br />
* Partition and format the USB drive using [http://rufus.akeo.ie/ Rufus USB partitioner]. Select partition scheme option as '''MBR for BIOS and UEFI''' and File system as '''FAT32'''. Uncheck "Create a bootable disk using ISO image" and "Create extended label and icon files" options.<br />
<br />
* Change the '''Volume Label''' of the USB flash drive {{ic|X:}} to match the LABEL mentioned in the {{ic|1=archisolabel=}} part in {{ic|<ISO>\loader\entries\archiso-x86_64.conf}}. This step is required for Official ISO ([[Archiso]]) but not required for [[Archboot]]. This step can be also performed using Rufus, during the prior "partition and format" step.<br />
<br />
* Extract the ISO (similar to extracting ZIP archive) to the USB flash drive (using [http://7-zip.org/ 7-Zip]. <br />
<br />
* Download official Syslinux 6.xx binaries (zip file) from https://www.kernel.org/pub/linux/utils/boot/syslinux/ and extract it. The version of Syslinux should be the same version used in the ISO image.<br />
<br />
* Run the following command (in Windows cmd prompt, as admin):<br />
<br />
{{Note|Use {{ic|X:\boot\syslinux\}} for Archboot iso.}}<br />
<br />
> cd bios\<br />
> for /r %Y in (*.c32) do copy "%Y" "X:\arch\boot\syslinux\" /y<br />
> copy mbr\*.bin X:\arch\boot\syslinux\ /y<br />
<br />
* Install Syslinux to the USB by running (use {{ic|win64\syslinux64.exe}} for x64 Windows):<br />
<br />
{{Note|Use {{ic|-d /boot/syslinux}} for Archboot iso.}}<br />
<br />
> cd bios\<br />
> win32\syslinux.exe -d /arch/boot/syslinux -i -a -m X:<br />
<br />
{{Note|<br />
* The above step installs Syslinux's {{ic|ldlinux.sys}} to the VBR of the USB partition, sets the partition as "active/boot" in the MBR partition table and writes the MBR boot code to the 1st 440-byte boot code region of the USB.<br />
<br />
* The {{ic|-d}} switch expects a path with forward slash path-separator like in *unix systems.<br />
}}<br />
<br />
== Other methods for BIOS systems ==<br />
<br />
=== In GNU/Linux ===<br />
<br />
==== Using a multiboot USB drive ====<br />
This allows booting multiple ISOs from a single USB device, including the archiso. Updating an existing USB drive to a more recent ISO is simpler than for most other methods. See [[Multiboot USB drive]].<br />
<br />
==== Using GNOME Disk Utility ====<br />
Linux distributions running GNOME can easily make a live CD through {{Pkg|nautilus}} and {{Pkg|gnome-disk-utility}}. Simply right-click on the .iso file, and select "Open With Disk Image Writer." When GNOME Disk Utility opens, specify the flash drive from the "Destination" drop-down menu and click "Start Restoring."<br />
<br />
==== Making a USB-ZIP drive ====<br />
For some old BIOS systems, only booting from USB-ZIP drives is supported. This method allows you to still boot from a USB-HDD drive.<br />
{{Warning|This will destroy all information on your USB flash drive!}}<br />
<br />
* Download {{Pkg|syslinux}} and {{Pkg|mtools}} from the official repositories.<br />
* Find your usb drive with {{ic|lsblk}}.<br />
* Type {{ic|mkdiskimage -4 /dev/sd'''x''' 0 64 32}} (replace x with the letter of your drive). This will take a while.<br />
From here continue with the manual formatting method. The partition will be {{ic|/dev/sd'''x'''4}} due to the way ZIP drives work.<br />
<br />
{{Note|Do not format the drive as FAT32; keep it as FAT16.}}<br />
<br />
==== Using UNetbootin ====<br />
UNetbootin can be used on any Linux distribution or Windows to copy your iso to a USB device. However, Unetbootin overwrites syslinux.cfg, so it creates a USB device that does not boot properly. For this reason, '''Unetbootin is not recommended''' -- please use {{ic|dd}} or one of the other methods discussed in this topic.<br />
{{Warning|UNetbootin writes over the default {{ic|syslinux.cfg}}; this must be restored before the USB device will boot properly.}}<br />
<br />
Edit {{ic|syslinux.cfg}}:<br />
<br />
{{hc|sysconfig.cfg|2=<br />
default menu.c32<br />
prompt 0<br />
menu title Archlinux Installer<br />
timeout 100<br />
<br />
label unetbootindefault<br />
menu label Archlinux_x86_64<br />
kernel /arch/boot/x86_64/vmlinuz<br />
append initrd=/arch/boot/x86_64/archiso.img archisodevice=/dev/sd'''x1''' ../../<br />
}}<br />
<br />
In {{ic|/dev/sd'''x1'''}} you must replace '''x''' with the first free letter after the last letter in use on the system where you are installing Arch Linux (e.g. if you have two hard drives, use {{ic|c}}.). You can make this change during the first phase of boot by pressing {{ic|Tab}} when the menu is shown.<br />
<br />
=== In Windows ===<br />
<br />
==== The Flashnul way ====<br />
<br />
[https://translate.google.com/translate?hl=&sl=ru&tl=en&u=http%3A%2F%2Fshounen.ru%2Fsoft%2Fflashnul%2Freadme.rus.html&sandbox=1 flashnul] is an utility to verify the functionality and maintenance of Flash-Memory (USB-Flash, IDE-Flash, SecureDigital, MMC, MemoryStick, SmartMedia, XD, CompactFlash etc).<br />
<br />
From a command prompt, invoke flashnul with {{ic|-p}}, and determine which device index is your USB drive, e.g.:<br />
<br />
{{hc|C:\>flashnul -p|<br />
Avaible physical drives:<br />
Avaible logical disks:<br />
C:\<br />
D:\<br />
E:\<br />
}}<br />
<br />
When you have determined which device is the correct one, you can write the image to your drive, by invoking flashnul with the device index, {{ic|-L}}, and the path to your image, e.g:<br />
<br />
C:\>flashnul '''E:''' -L ''path\to\arch.iso''<br />
<br />
As long as you are really sure you want to write the data, type yes, then wait a bit for it to write. If you get an access denied error, close any Explorer windows you have open.<br />
<br />
If under Vista or Win7, you should open the console as administrator, or else flashnul will fail to open the stick as a block device and will only be able to write via the drive handle windows provides<br />
<br />
{{Note|Confirmed that you need to use drive letter as opposed to number. flashnul 1rc1, Windows 7 x64.}}<br />
<br />
==== Loading the installation media from RAM ====<br />
<br />
{{Merge|Multiboot USB drive#Using Syslinux and memdisk|This is the same method, only Syslinux is installed from Windows. Considering that [[multiboot USB drive]] can be used to boot an installation media and it is already linked from the Related articles box at the top, maybe this section should be merged there?}}<br />
<br />
This method uses [[Syslinux]] and a [[Ramdisk]] ([http://www.syslinux.org/wiki/index.php/MEMDISK MEMDISK]) to load the entire Arch Linux ISO image into RAM. Since this will be running entirely from system memory, you will need to make sure the system you will be installing this on has an adequate amount. A minimum amount of RAM between 500 MB and 1 GB should suffice for a MEMDISK based, Arch Linux install.<br />
<br />
For more information on Arch Linux system requirements as well as those for MEMDISK see the [[Installation guide]] and [http://www.etherboot.org/wiki/bootingmemdisk#preliminaries here]. For reference, here is the [https://bbs.archlinux.org/viewtopic.php?id=135266 preceding forum thread].<br />
<br />
{{Tip|Once the installer has completed loading you can simply remove the USB stick and even use it on a different machine to start the process all over again. Utilizing MEMDISK also allows booting and installing Arch Linux to and from the same USB flash drive.}}<br />
<br />
===== Preparing the USB flash drive =====<br />
<br />
Begin by formatting the USB flash drive as '''FAT32'''. Then create the following folders on the newly formatted drive.<br />
* {{ic|Boot}}<br />
** {{ic|Boot/ISOs}}<br />
** {{ic|Boot/Settings}}<br />
<br />
===== Copy the needed files to the USB flash drive =====<br />
<br />
Next copy the ISO that you would like to boot to the {{ic|Boot/ISOs}} folder. After that, extract from the following files from the latest release of {{pkg|syslinux}} from [http://www.kernel.org/pub/linux/utils/boot/syslinux/ here] and copy them into the following folders.<br />
* {{ic|./win32/syslinux.exe}} to the Desktop or Downloads folder on your system.<br />
* {{ic|./memdisk/memdisk}} to the {{ic|Settings}} folder on your USB flash drive.<br />
<br />
===== Create the configuration file =====<br />
<br />
After copying the needed files, navigate to the USB flash drive, /boot/Settings and create a {{ic|syslinux.cfg}} file.<br />
{{Warning|On the {{ic|INITRD}} line, be sure to use the name of the ISO file that you copied to your {{ic|ISOs}} folder!}}<br />
{{hc|/Boot/Settings/syslinux.cfg|2=<br />
DEFAULT arch_iso<br />
<br />
LABEL arch_iso<br />
MENU LABEL Arch Setup<br />
LINUX memdisk<br />
INITRD /Boot/ISOs/archlinux-2017.04.01-x86_64.iso<br />
APPEND iso}}<br />
For more information on Syslinux see the [[Syslinux|Arch Wiki article]].<br />
<br />
===== Final steps =====<br />
<br />
Finally, create a {{ic|*.bat}} file where {{ic|syslinux.exe}} is located and run it ("Run as administrator" if you are on Vista or Windows 7):<br />
{{hc|C:\Documents and Settings\username\Desktop\install.bat|<br />
@echo off<br />
syslinux.exe -m -a -d /Boot/Settings X:}}<br />
<br />
== Troubleshooting ==<br />
<br />
* If you get the "device did not show up after 30 seconds" error due to the {{ic|/dev/disk/by-label/ARCH_XXXXYY}} not mounting, try renaming your USB media to {{ic|ARCH_XXXXYY}} (e.g. {{ic|ARCH_201501}}).<br />
<br />
== See also ==<br />
<br />
* [https://wiki.gentoo.org/wiki/LiveUSB/HOWTO Gentoo wiki - LiveUSB/HOWTO]<br />
* [https://fedoraproject.org/wiki/How_to_create_and_use_Live_USB Fedora wiki - How to create and use Live USB]<br />
* [http://en.opensuse.org/SDB:Live_USB_stick openSUSE wiki - SDB:Live USB stick]</div>Milkhttps://wiki.archlinux.org/index.php?title=User:Milk&diff=512977User:Milk2018-03-08T01:20:33Z<p>Milk: Created page with "milk on freenode See also my wiki: https://wiki.thingsandstuff.org"</p>
<hr />
<div>milk on freenode<br />
<br />
See also my wiki: https://wiki.thingsandstuff.org</div>Milkhttps://wiki.archlinux.org/index.php?title=User_talk:Milk&diff=512976User talk:Milk2018-03-08T01:20:27Z<p>Milk: </p>
<hr />
<div>Hit add topic above.</div>Milkhttps://wiki.archlinux.org/index.php?title=User_talk:Milk&diff=512975User talk:Milk2018-03-08T01:18:51Z<p>Milk: Created page with "milk on freenode See also my wiki: https://wiki.thingsandstuff.org"</p>
<hr />
<div>milk on freenode<br />
<br />
See also my wiki: https://wiki.thingsandstuff.org</div>Milkhttps://wiki.archlinux.org/index.php?title=Flashing_BIOS_from_Linux&diff=512952Flashing BIOS from Linux2018-03-07T17:09:45Z<p>Milk: /* Prebuilt images */ download links work on archive.org(!)</p>
<hr />
<div>[[Category:Mainboards and BIOS]]<br />
[[ja:Linux から BIOS を書き換える]]<br />
This article aims on providing information on flashing your system BIOS under Linux. Most manufacturers provide a Windows executable or a BIOS executable that can only be run under Windows. However, there are a few utilities, that allow you to upgrade your system BIOS under Linux.<br />
<br />
{{Warning|Flashing motherboard BIOS is a dangerous activity that can render your motherboard inoperable! While the author of this article has successfully run this procedure many times, your mileage may vary. Be careful! You may want to consider updating [[microcode]] instead if it is supported by your system.}}<br />
<br />
{{Note|<br />
* HP users may download Windows BIOS updater from HP website, extract *.exe file and locate ISO image for burning to a CD. Using CD, upgrade is possible from BIOS menu using 'Firmware Upgrade' without using below tools. See [https://h30434.www3.hp.com/t5/Notebook-Operating-System-and-Recovery/How-to-update-BIOS-on-Linux/td-p/4869835 this] thread for details.<br />
* For users with Dell computers, Dell recommends Linux users flash their BIOS following information located [https://www.dell.com/support/article/us/en/19/sln171755/updating-the-dell-bios-in-linux-and-ubuntu-environments here].<br />
}}<br />
<br />
== fwupd ==<br />
<br />
fwupd is a simple daemon to allow session software to update device firmware on your local machine.<br />
<br />
Large vendors including Dell and Logitech use this way to distribute firmware updates to Linux.<br />
<br />
fwupd only supports flashing BIOS updates in UEFI mode.<br />
<br />
See [[fwupd]] for further information about installation and usage.<br />
<br />
== BiosDisk ==<br />
<br />
[https://github.com/dell/biosdisk BiosDisk] simplifies the process of flashing your system BIOS under Linux.<br />
<br />
{{Note|This is only supported on systems when booted in "Legacy mode". In UEFI mode you will need to use a different method.}}<br />
<br />
=== Installation ===<br />
<br />
[[Install]] the {{AUR|biosdisk-git}} package.<br />
<br />
=== Usage ===<br />
<br />
To use the biosdisk utility to create a BIOS flash image, first download the latest raw BIOS image for your system from your manufacturer's website. Make sure however, that you always get the BIOS executable and NOT the Windows executable. You then have one of two options: create a ISO or install the image for your bootloader.<br />
<br />
* The mkimage action will create a ISO image on the user's hard drive. Usage is the following:<br />
<br />
# biosdisk mkimage [-o option] [-i destination] /path/to/.exe <br />
<br />
* The install action will create the biosdisk image, copy the image file to /boot, and then update the bootloader with an entry for the image. Then all the user has to do is boot the system and select the image to flash the BIOS; this will load the biosdisk image directly from the hard drive and flash the BIOS.<br />
<br />
# biosdisk install [-o option] [--name=] /path/to/.exe<br />
<br />
== Flashrom ==<br />
<br />
[http://www.flashrom.org/Flashrom Flashrom] is a utility for identifying, reading, writing, verifying and erasing flash chips. It is designed to flash BIOS/EFI/coreboot/firmware/optionROM images on mainboards, network/graphics/storage controller cards, and various programmer devices.<br />
<br />
{{Warning|If you have a laptop/notebook/netbook, please do NOT try flashrom because interactions with the EC on these machines might crash your machine during flashing. flashrom tries to detect if a machine is a laptop, but not all laptops follow the standard, so this is not 100% reliable.[https://www.flashrom.org/Board_Testing_HOWTO]}}<br />
<br />
=== Installation ===<br />
<br />
[[Install]] the {{pkg|flashrom}} or {{AUR|flashrom-git}} package.<br />
<br />
=== Usage ===<br />
<br />
Find out if your motherboard and chipset (internal) is supported by flashrom at this website. [http://www.flashrom.org/Supported_hardware Supported Hardware]<br />
You can also find out if your hardware is supported by issuing the following command<br />
<br />
# flashrom --programmer internal<br />
<br />
The above command will tell you your motherboard and chipset. You can then find out if yours is supported by issuing this command:<br />
<br />
# flashrom --programmer internal -L | grep CHIPNAMEfrompreviouscommand<br />
<br />
On modern mainboards you probably get more than one rom chip listed. You have to select the chipname you get from the upper command. Then you use the {{ic|-c}} option to select which rom is affected by the command<br />
<br />
# flashrom --programmer internal -c "CHIPNAME" -r backup_CHIPNAME.bin<br />
<br />
Write and verify the new BIOS image (proprietary or Coreboot) on the ROM chip:<br />
<br />
# flashrom --programmer internal internal -c "CHIPNAME" -w newbios.bin<br />
<br />
If you want to flash other flash chips on your mainboard, you will find all options with<br />
<br />
# flashrom<br />
<br />
{{Note|1=With Linux kernel versions greater than 4.4, {{ic|CONFIG_IO_STRICT_DEVMEM}} a new kernel security measure can make flashrom stop working, in that case you can try adding {{ic|1=iomem=relaxed}} to your kernel parameters. [https://www.flashrom.org/FAQ FAQ].}}<br />
<br />
== FreeDOS ==<br />
<br />
[http://www.freedos.org/ FreeDOS] a free DOS-compatible operating system, is up to the challenge, no need for proprietary DOS versions. So, all you need is a bootable floppy disk image with FreeDOS kernel on it.<br />
<br />
=== Unetbootin ===<br />
<br />
By far the easiest way to make a bootable FreeDOS USB Stick is using {{AUR|unetbootin}}.<br />
<br />
You should format a pendrive with FAT16 and flag it as "boot" (you may do this through a GUI with {{Pkg|gparted}} or {{Pkg|partitionmanager}}). Then, after mounting the flash drive, select under distribution '''FreeDOS''' and your mounted stick. The app will automatically download the image for you and copy it to the drive. Finally, you may copy everything you want to flash there (BIOS, firmwares, etc).<br />
<br />
{{Warning|Unetbootin may not function properly on some Lenovo systems. It may be necessary to create the bootable stick on a different device. See [http://reboot.pro/topic/9849-blinking-cursor-at-boot/ here].}}<br />
<br />
=== Gentoo ===<br />
<br />
Check out [[gentoo:BIOS Update#FreeDOS environment|FreeDOS Flash Drive]] on the Gentoo Wiki if you want to create a bootable FreeDOS Flash drive.<br />
<br />
=== Prebuilt images ===<br />
<br />
Yet another simple solution: [https://web.archive.org/web/20161022000203/https://www.chtaube.eu/computers/freedos/bootable-usb/ FreeDOS prebuilt bootable USB flash drive image by Christian Taube] (web.archive.org)<br />
<br />
=== Using a FreeDOS-provided Disk Image + USB stick ===<br />
<br />
As of writing (2017-07-11), {{AUR|unetbootin}} doesn't support versions of FreeDOS more recent than 1.0 (current version is 1.2). The following procedure worked to upgrade an Inspiron 17-3737 to the A09 BIOS. (Dell offers this as a possibility [http://www.dell.com/support/article/ca/en/cabsdt1/SLN171755/updating-the-dell-bios-in-linux-and-ubuntu-environments?lang=EN#Creating%20a%20USB%20Bootable%20Storage%20Device on their site])<br />
<br />
Some notes before starting:<br />
<br />
* You can check your current BIOS version with {{pkg|dmidecode}}. You might already be at the latest version.<br />
* Ensure that your hardware vendor has verified this method works (use of FreeDOS to run BIOS update {{ic|.exe}})<br />
* Laptop users should not attempt this without AC power<br />
* This is dangerous, and you assume all risk for following this procedure.<br />
<br />
Procedure:<br />
<br />
# Grab the latest USB installer from the [http://www.freedos.org/download/ FreeDOS Download Page]<br />
#* author note: used the "Full" version on suspicion that it might include more drivers, etc (pure speculation)<br />
# Extract the archive, you get a ''.img'' file<br />
# Determine which of {{ic|/dev/sdX}} is your USB stick (use {{ic|fdisk -l}})<br />
# Write the image directly to the block device:<br />
#* {{ic|1=dd if=FD12FULL.img of=/dev/sdX status=progress}} (where {{ic|X}} is the letter representing your USB stick as a block device, don't write the image to a partition)<br />
# Double-check that the image copying worked:<br />
#* {{ic|fdisk -l}} (you should see a single partition on a DOS disk with the bootable ("boot") flag set)<br />
# Mount the partition, and copy over the ''.exe'' used to update your firmware<br />
#* Stay on the safe side and limit the filename to 8 characters (without extension), upper case<br />
#* Ensure that you verified any checksums provided by your hardware vendor<br />
# Unmount and reboot. Do whatever is needed to boot from the USB drive<br />
<br />
Now you will find yourself in the FreeDOS live installation environment.<br />
<br />
# Select your language<br />
# You will be prompted to install FreeDOS<br />
#* Select "No - Return to DOS"<br />
# You should see a prompt ({{ic|C:\>}})<br />
# Run {{ic|dir /w}} and verify that your firmware upgrade tool is present<br />
# Run the executable<br />
#* author note: in the case of the Dell tool, the machine displayed a spash screen and then rebooted. Upon reboot, it started the firmware upgrade automatically, and ran for about 2 minutes with the fan at full speed)<br />
# Once the process specific to your vendor completes, optionally verify through the BIOS setup screen, as well as by running {{pkg|dmidecode}} when you're back in linux<br />
<br />
=== Images that are too large for a floppy ===<br />
<br />
If your flash image is too large for a floppy, go to the [http://www.fdos.org/bootdisks/ FreeDos bootdisk website], and download the 10Mb hard-disk image. This image is a full disk image, including partitions, so adding your flash utility will be a little trickier:<br />
<br />
First find the first partition (at time of writing, the first partition starts at block 63; this means that the partitions starts at offset {{ic|1=512 * 63 = 32256}}).<br />
You can either use:<br />
<br />
{{hc|# file -sk ''<image-file>'' {{!}} sed -r 's/.*startsector ([0-9]+).*/\1/'|<br />
'''63'''<br />
}}<br />
<br />
Or:<br />
<br />
{{hc|# fdisk -l ''<image-file>''|2=<br />
…<br />
Units = sectors of 1 * '''512''' = 512 bytes<br />
…<br />
Device Boot Start End Blocks Id System<br />
* '''63''' 19151 9544+ 1 FAT12<br />
}}<br />
<br />
Now you can mount the image:<br />
<br />
# mount -oloop,offset=$((63 * 512)) ''<image-file>'' /mnt<br />
<br />
Then you can copy your flash utility onto the filesystem as normal.<br />
Once you're done:<br />
<br />
# umount /mnt<br />
<br />
The image can now be copied to a USB stick for booting, or booted as a memdisk as per normal instructions.<br />
<br />
=== Usage ===<br />
<br />
The OEM Bootdisk version is recommended, as it only includes {{ic|kernel}} and {{ic|command.com}} thus leaving more space for the flash utility and new BIOS image. Download and decompress the FreeDOS image:<br />
<br />
$ wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz<br />
$ gunzip FDOEM.144.gz<br />
<br />
Copy your BIOS flash utility and new BIOS image to the mounted floppy disk image. Load the necessary modules:<br />
<br />
# modprobe vfat<br />
# modprobe loop<br />
<br />
{{ic|/proc/fileystems}} shows if the needed file systems are supported. "loop mount" the floppy disk image to a temporary path:<br />
<br />
$ mkdir /tmp/floppy<br />
$ mount -t vfat -o loop FDOEM.144 /tmp/floppy<br />
<br />
If the mount went without errors, copy the BIOS flash utility and new BIOS image to the mounted floppy disk image. You will probably have to unzip the archive you downloaded from your motherboard vendor site, to get to those two files. For example:<br />
<br />
{{hc|# unzip 775Dual-VSTA\(2.60\).zip|<br />
Archive: 775Dual-VSTA(2.60).zip<br />
inflating: 75DVSTA2.60<br />
inflating: ASRflash.exe<br />
}}<br />
<br />
# cp 75DVSTA2.60 ASRflash.exe /tmp/floppy<br />
<br />
Check that the two files were not too big for the floppy:<br />
<br />
{{bc|<br />
Filesystem 1K-blocks Used Available Use% Mounted on<br />
/tmp/FDOEM.144<br />
1424 990 434 70% /tmp/floppy<br />
}}<br />
<br />
Unmount the floppy disk image:<br />
<br />
# umount /tmp/floppy<br />
<br />
The next step is to burn the floppy image to a CD/DVD-RW media, but in a way that it can be booted afterwards. First create a bootable CD image, and then burn it.<br />
<br />
# genisoimage -o bootcd.iso -b FDOEM.144 FDOEM.144<br />
# wodim -v bootcd.iso<br />
<br />
You may alternatively add your image to the [[GRUB]] menu. Install [[syslinux]] and copy {{ic|memdisk}} and your image to {{ic|/boot}}:<br />
<br />
# cp /usr/lib/syslinux/memdisk /boot<br />
# cp FDOEM.144 /boot/flashbios.img<br />
<br />
Now add an entry to {{ic|/boot/grub/menu.lst}}:<br />
<br />
{{hc|/boot/grub/menu.lst|<br />
title Flash BIOS<br />
kernel /memdisk<br />
initrd /flashbios.img<br />
}}<br />
<br />
Or for GRUB2 in {{ic|/boot/grub/grub.cfg}}:<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
menuentry "Flash BIOS" {<br />
linux16 /boot/memdisk<br />
initrd16 /boot/flashbios.img<br />
}<br />
</nowiki>}}<br />
<br />
Or for syslinux in {{ic|/boot/syslinux/syslinux.cfg}}:<br />
<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
LABEL flashbios<br />
MENU LABEL Flash BIOS<br />
LINUX ../memdisk<br />
INITRD ../fdboot.img<br />
}}<br />
<br />
Finally reboot your machine, making sure the CD drive is first in the boot sequence, and run the BIOS upgrade procedure when the CD boots. If using the GRUB method, choose the new entry on the list, and it should boot into FreeDOS.<br />
<br />
== Bootable optical disk emulation ==<br />
<br />
The script Geteltorito.pl will extract the [[wikipedia:El Torito (CD-ROM standard)|El Torito]] boot image. It has worked on Lenovo laptops like X220, X230, X260, W540, T450 and T450s. It may work for other vendors as well.<br />
<br />
=== Installation ===<br />
<br />
Install the {{AUR|geteltorito}} package.<br />
<br />
=== Usage ===<br />
<br />
Get the bios update iso from the vendor support site. Run the ''geteltorito'' image extraction:<br />
<br />
$ geteltorito.pl -o <image>.img <image>.iso<br />
<br />
Copy the image to the usb thumbdrive:<br />
<br />
# dd if=<image>.img of=<destination> bs=512K<br />
<br />
Reboot and boot from the USB drive, follow vendor directions.<br />
<br />
{{Note|If you get the message "Secure Flash Authentication failed!", it means that some security check did not allow the flash to happen. It can help to go to the BIOS options page "Security" > "UEFI BIOS Update Option" and disable "Secure RollBack Prevention" and enable "Flash BIOS Updating by End-Users". You can set them to what you want after flashing.}}</div>Milkhttps://wiki.archlinux.org/index.php?title=Flashing_BIOS_from_Linux&diff=511200Flashing BIOS from Linux2018-02-17T05:01:54Z<p>Milk: /* Flashrom */ from nonexisting -svn to existing -git</p>
<hr />
<div>[[Category:Mainboards and BIOS]]<br />
[[ja:Linux から BIOS を書き換える]]<br />
This article aims on providing information on flashing your system BIOS under Linux. Most manufacturers provide a Windows executable or a BIOS executable that can only be run under Windows. However, there are a few utilities, that allow you to upgrade your system BIOS under Linux.<br />
<br />
{{Warning|Flashing motherboard BIOS is a dangerous activity that can render your motherboard inoperable! While the author of this article has successfully run this procedure many times, your mileage may vary. Be careful! You may want to consider updating [[microcode]] instead if it is supported by your system.}}<br />
<br />
{{Note|<br />
* HP users may download Windows BIOS updater from HP website, extract *.exe file and locate ISO image for burning to a CD. Using CD, upgrade is possible from BIOS menu using 'Firmware Upgrade' without using below tools. See [https://h30434.www3.hp.com/t5/Notebook-Operating-System-and-Recovery/How-to-update-BIOS-on-Linux/td-p/4869835 this] thread for details.<br />
* For users with Dell computers, Dell recommends Linux users flash their BIOS following information located [https://www.dell.com/support/article/us/en/19/sln171755/updating-the-dell-bios-in-linux-and-ubuntu-environments here].<br />
}}<br />
<br />
== fwupd ==<br />
<br />
fwupd is a simple daemon to allow session software to update device firmware on your local machine. It's designed for desktops, but this project is also usable on phones, tablets and on headless servers. You can either use a GUI software manager like GNOME Software to view and apply updates or the command-line tool fwupdmgr.<br />
<br />
Large vendors including Dell and Logitech use this way to distribute firmware updates to Linux.<br />
<br />
A list of hardware currently available in stable tree can be viewed [https://fwupd.org/lvfs/devicelist here].<br />
<br />
fwupd currently only supports flashing BIOS updates in UEFI mode.<br />
<br />
=== Installation ===<br />
<br />
[[Install]] {{Pkg|fwupd}}.<br />
<br />
'''Be sure to pay attention to post installation steps.'''<br />
You'll need to load the bootloader to your EFI system partition manually.<br />
<br />
=== Usage ===<br />
<br />
To check if your machine is supported you can look at supported devices with fwupdmgr:<br />
<br />
# fwupdmgr get-devices<br />
<br />
If you don't see a UEFI entry but are installed in UEFI mode, check BIOS setup for an option to turn on UEFI capsule updates.<br />
<br />
To refresh metadata:<br />
# fwupdmgr refresh<br />
<br />
To check which devices have updates:<br />
<br />
# fwupdmgr get-updates<br />
<br />
To install updates:<br />
# fwupdmgr update<br />
<br />
== BiosDisk ==<br />
<br />
[https://github.com/dell/biosdisk BiosDisk] simplifies the process of flashing your system BIOS under Linux.<br />
<br />
{{Note|This is only supported on systems when booted in "Legacy mode". In UEFI mode you will need to use a different method.}}<br />
<br />
=== Installation ===<br />
<br />
[[Install]] the {{AUR|biosdisk-git}} package.<br />
<br />
=== Usage ===<br />
<br />
To use the biosdisk utility to create a BIOS flash image, first download the latest raw BIOS image for your system from your manufacturer's website. Make sure however, that you always get the BIOS executable and NOT the Windows executable. You then have one of two options: create a ISO or install the image for your bootloader.<br />
<br />
* The mkimage action will create a ISO image on the user's hard drive. Usage is the following:<br />
<br />
# biosdisk mkimage [-o option] [-i destination] /path/to/.exe <br />
<br />
* The install action will create the biosdisk image, copy the image file to /boot, and then update the bootloader with an entry for the image. Then all the user has to do is boot the system and select the image to flash the BIOS; this will load the biosdisk image directly from the hard drive and flash the BIOS.<br />
<br />
# biosdisk install [-o option] [--name=] /path/to/.exe<br />
<br />
== Flashrom ==<br />
<br />
[http://www.flashrom.org/Flashrom Flashrom] is a utility for identifying, reading, writing, verifying and erasing flash chips. It is designed to flash BIOS/EFI/coreboot/firmware/optionROM images on mainboards, network/graphics/storage controller cards, and various programmer devices.<br />
<br />
{{Warning|If you have a laptop/notebook/netbook, please do NOT try flashrom because interactions with the EC on these machines might crash your machine during flashing. flashrom tries to detect if a machine is a laptop, but not all laptops follow the standard, so this is not 100% reliable.[https://www.flashrom.org/Board_Testing_HOWTO]}}<br />
<br />
=== Installation ===<br />
<br />
[[Install]] the {{pkg|flashrom}} or {{AUR|flashrom-git}} package.<br />
<br />
=== Usage ===<br />
<br />
Find out if your motherboard and chipset (internal) is supported by flashrom at this website. [http://www.flashrom.org/Supported_hardware Supported Hardware]<br />
You can also find out if your hardware is supported by issuing the following command<br />
<br />
# flashrom --programmer internal<br />
<br />
The above command will tell you your motherboard and chipset. You can then find out if yours is supported by issuing this command:<br />
<br />
# flashrom --programmer internal -L | grep CHIPNAMEfrompreviouscommand<br />
<br />
On modern mainboards you probably get more than one rom chip listed. You have to select the chipname you get from the upper command. Then you use the {{ic|-c}} option to select which rom is affected by the command<br />
<br />
# flashrom --programmer internal -c "CHIPNAME" -r backup_CHIPNAME.bin<br />
<br />
Write and verify the new BIOS image (proprietary or Coreboot) on the ROM chip:<br />
<br />
# flashrom --programmer internal internal -c "CHIPNAME" -w newbios.bin<br />
<br />
If you want to flash other flash chips on your mainboard, you will find all options with<br />
<br />
# flashrom<br />
<br />
{{Note|1=With Linux kernel versions greater than 4.4, {{ic|CONFIG_IO_STRICT_DEVMEM}} a new kernel security measure can make flashrom stop working, in that case you can try adding {{ic|1=iomem=relaxed}} to your kernel parameters. [https://www.flashrom.org/FAQ FAQ].}}<br />
<br />
== FreeDOS ==<br />
<br />
[http://www.freedos.org/ FreeDOS] a free DOS-compatible operating system, is up to the challenge, no need for proprietary DOS versions. So, all you need is a bootable floppy disk image with FreeDOS kernel on it.<br />
<br />
=== Unetbootin ===<br />
<br />
By far the easiest way to make a bootable FreeDOS USB Stick is using {{AUR|unetbootin}}.<br />
<br />
You should format a pendrive with FAT16 and flag it as "boot" (you may do this through a GUI with {{Pkg|gparted}} or {{Pkg|partitionmanager}}). Then, after mounting the flash drive, select under distribution '''FreeDOS''' and your mounted stick. The app will automatically download the image for you and copy it to the drive. Finally, you may copy everything you want to flash there (BIOS, firmwares, etc).<br />
<br />
{{Warning|Unetbootin may not function properly on some Lenovo systems. It may be necessary to create the bootable stick on a different device. See [http://reboot.pro/topic/9849-blinking-cursor-at-boot/ here].}}<br />
<br />
=== Gentoo ===<br />
<br />
Check out [[gentoo:BIOS Update#FreeDOS environment|FreeDOS Flash Drive]] on the Gentoo Wiki if you want to create a bootable FreeDOS Flash drive.<br />
<br />
=== Prebuilt images ===<br />
<br />
Yet another simple solution: [http://chtaube.eu/computers/freedos/bootable-usb/ FreeDOS prebuilt bootable USB flash drive image by Christian Taube]{{Dead link|2017|07|11}}<br />
<br />
=== Using a FreeDOS-provided Disk Image + USB stick ===<br />
<br />
As of writing (2017-07-11), {{AUR|unetbootin}} doesn't support versions of FreeDOS more recent than 1.0 (current version is 1.2). The following procedure worked to upgrade an Inspiron 17-3737 to the A09 BIOS. (Dell offers this as a possibility [http://www.dell.com/support/article/ca/en/cabsdt1/SLN171755/updating-the-dell-bios-in-linux-and-ubuntu-environments?lang=EN#Creating%20a%20USB%20Bootable%20Storage%20Device on their site])<br />
<br />
Some notes before starting:<br />
<br />
* You can check your current BIOS version with {{pkg|dmidecode}}. You might already be at the latest version.<br />
* Ensure that your hardware vendor has verified this method works (use of FreeDOS to run BIOS update {{ic|.exe}})<br />
* Laptop users should not attempt this without AC power<br />
* This is dangerous, and you assume all risk for following this procedure.<br />
<br />
Procedure:<br />
<br />
# Grab the latest USB installer from the [http://www.freedos.org/download/ FreeDOS Download Page]<br />
#* author note: used the "Full" version on suspicion that it might include more drivers, etc (pure speculation)<br />
# Extract the archive, you get a ''.img'' file<br />
# Determine which of {{ic|/dev/sdX}} is your USB stick (use {{ic|fdisk -l}})<br />
# Write the image directly to the block device:<br />
#* {{ic|1=dd if=FD12FULL.img of=/dev/sdX status=progress}} (where {{ic|X}} is the letter representing your USB stick as a block device, don't write the image to a partition)<br />
# Double-check that the image copying worked:<br />
#* {{ic|fdisk -l}} (you should see a single partition on a DOS disk with the bootable ("boot") flag set)<br />
# Mount the partition, and copy over the ''.exe'' used to update your firmware<br />
#* Stay on the safe side and limit the filename to 8 characters (without extension), upper case<br />
#* Ensure that you verified any checksums provided by your hardware vendor<br />
# Unmount and reboot. Do whatever is needed to boot from the USB drive<br />
<br />
Now you will find yourself in the FreeDOS live installation environment.<br />
<br />
# Select your language<br />
# You will be prompted to install FreeDOS<br />
#* Select "No - Return to DOS"<br />
# You should see a prompt ({{ic|C:\>}})<br />
# Run {{ic|dir /w}} and verify that your firmware upgrade tool is present<br />
# Run the executable<br />
#* author note: in the case of the Dell tool, the machine displayed a spash screen and then rebooted. Upon reboot, it started the firmware upgrade automatically, and ran for about 2 minutes with the fan at full speed)<br />
# Once the process specific to your vendor completes, optionally verify through the BIOS setup screen, as well as by running {{pkg|dmidecode}} when you're back in linux<br />
<br />
=== Images that are too large for a floppy ===<br />
<br />
If your flash image is too large for a floppy, go to the [http://www.fdos.org/bootdisks/ FreeDos bootdisk website], and download the 10Mb hard-disk image. This image is a full disk image, including partitions, so adding your flash utility will be a little trickier:<br />
<br />
First find the first partition (at time of writing, the first partition starts at block 63; this means that the partitions starts at offset {{ic|1=512 * 63 = 32256}}).<br />
You can either use:<br />
<br />
{{hc|# file -sk ''<image-file>'' {{!}} sed -r 's/.*startsector ([0-9]+).*/\1/'|<br />
'''63'''<br />
}}<br />
<br />
Or:<br />
<br />
{{hc|# fdisk -l ''<image-file>''|2=<br />
…<br />
Units = sectors of 1 * '''512''' = 512 bytes<br />
…<br />
Device Boot Start End Blocks Id System<br />
* '''63''' 19151 9544+ 1 FAT12<br />
}}<br />
<br />
Now you can mount the image:<br />
<br />
# mount -oloop,offset=$((63 * 512)) ''<image-file>'' /mnt<br />
<br />
Then you can copy your flash utility onto the filesystem as normal.<br />
Once you're done:<br />
<br />
# umount /mnt<br />
<br />
The image can now be copied to a USB stick for booting, or booted as a memdisk as per normal instructions.<br />
<br />
=== Usage ===<br />
<br />
The OEM Bootdisk version is recommended, as it only includes {{ic|kernel}} and {{ic|command.com}} thus leaving more space for the flash utility and new BIOS image. Download and decompress the FreeDOS image:<br />
<br />
$ wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz<br />
$ gunzip FDOEM.144.gz<br />
<br />
Copy your BIOS flash utility and new BIOS image to the mounted floppy disk image. Load the necessary modules:<br />
<br />
# modprobe vfat<br />
# modprobe loop<br />
<br />
{{ic|/proc/fileystems}} shows if the needed file systems are supported. "loop mount" the floppy disk image to a temporary path:<br />
<br />
$ mkdir /tmp/floppy<br />
$ mount -t vfat -o loop FDOEM.144 /tmp/floppy<br />
<br />
If the mount went without errors, copy the BIOS flash utility and new BIOS image to the mounted floppy disk image. You will probably have to unzip the archive you downloaded from your motherboard vendor site, to get to those two files. For example:<br />
<br />
{{hc|# unzip 775Dual-VSTA\(2.60\).zip|<br />
Archive: 775Dual-VSTA(2.60).zip<br />
inflating: 75DVSTA2.60<br />
inflating: ASRflash.exe<br />
}}<br />
<br />
# cp 75DVSTA2.60 ASRflash.exe /tmp/floppy<br />
<br />
Check that the two files were not too big for the floppy:<br />
<br />
{{bc|<br />
Filesystem 1K-blocks Used Available Use% Mounted on<br />
/tmp/FDOEM.144<br />
1424 990 434 70% /tmp/floppy<br />
}}<br />
<br />
Unmount the floppy disk image:<br />
<br />
# umount /tmp/floppy<br />
<br />
The next step is to burn the floppy image to a CD/DVD-RW media, but in a way that it can be booted afterwards. First create a bootable CD image, and then burn it.<br />
<br />
# genisoimage -o bootcd.iso -b FDOEM.144 FDOEM.144<br />
# wodim -v bootcd.iso<br />
<br />
You may alternatively add your image to the [[GRUB]] menu. Install [[syslinux]] and copy {{ic|memdisk}} and your image to {{ic|/boot}}:<br />
<br />
# cp /usr/lib/syslinux/memdisk /boot<br />
# cp FDOEM.144 /boot/flashbios.img<br />
<br />
Now add an entry to {{ic|/boot/grub/menu.lst}}:<br />
<br />
{{hc|/boot/grub/menu.lst|<br />
title Flash BIOS<br />
kernel /memdisk<br />
initrd /flashbios.img<br />
}}<br />
<br />
Or for GRUB2 in {{ic|/boot/grub/grub.cfg}}:<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
menuentry "Flash BIOS" {<br />
linux16 /boot/memdisk<br />
initrd16 /boot/flashbios.img<br />
}<br />
</nowiki>}}<br />
<br />
Or for syslinux in {{ic|/boot/syslinux/syslinux.cfg}}:<br />
<br />
{{hc|/boot/syslinux/syslinux.cfg|<br />
LABEL flashbios<br />
MENU LABEL Flash BIOS<br />
LINUX ../memdisk<br />
INITRD ../fdboot.img<br />
}}<br />
<br />
Finally reboot your machine, making sure the CD drive is first in the boot sequence, and run the BIOS upgrade procedure when the CD boots. If using the GRUB method, choose the new entry on the list, and it should boot into FreeDOS.<br />
<br />
== Bootable optical disk emulation ==<br />
<br />
The script Geteltorito.pl will extract the [[wikipedia:El Torito (CD-ROM standard)|El Torito]] boot image. It has worked on Lenovo laptops like X220, X230, X260, W540, T450 and T450s. It may work for other vendors as well.<br />
<br />
=== Installation ===<br />
<br />
Install the {{AUR|geteltorito}} package.<br />
<br />
=== Usage ===<br />
<br />
Get the bios update iso from the vendor support site. Run the ''geteltorito'' image extraction:<br />
<br />
$ geteltorito.pl -o <image>.img <image>.iso<br />
<br />
Copy the image to the usb thumbdrive:<br />
<br />
# dd if=<image>.img of=<destination> bs=512K<br />
<br />
Reboot and boot from the USB drive, follow vendor directions.<br />
<br />
{{Note|If you get the message "Secure Flash Authentication failed!", it means that some security check did not allow the flash to happen. It can help to go to the BIOS options page "Security" > "UEFI BIOS Update Option" and disable "Secure RollBack Prevention" and enable "Flash BIOS Updating by End-Users". You can set them to what you want after flashing.}}</div>Milkhttps://wiki.archlinux.org/index.php?title=Arch_IRC_channels&diff=509273Arch IRC channels2018-02-02T03:31:50Z<p>Milk: /* Other channels */ missed a word</p>
<hr />
<div>[[Category:Internet Relay Chat]]<br />
[[Category:About Arch]]<br />
[[es:IRC channel]]<br />
[[fr:IRC]]<br />
[[ja:IRC チャンネル]]<br />
[[pt:IRC channel]]<br />
[[ru:IRC channel]]<br />
[[sr:IRC channels]]<br />
[[zh-hans:IRC channel]]<br />
{{Related articles start}}<br />
{{Related|ArchWiki:IRC}}<br />
{{Related|International communities}}<br />
{{Related|phrik}}<br />
{{Related articles end}}<br />
{{Note|Do not edit this page unless you are a channel op in #archlinux. You are welcome to use the discussion page.}}<br />
<br />
== Main channels ==<br />
<br />
{{Warning|Channel statistics are logged for [http://www.hax0r.se/aotstats.html #archlinux-offtopic]. Speak to ''dunz0r'' if you would like to opt-out permanently.}}<br />
<br />
This section is about [ircs://chat.freenode.net/archlinux #archlinux], the main Arch Linux support [[wikipedia:Internet Relay Chat|IRC]] channel, and [ircs://chat.freenode.net/archlinux-offtopic #archlinux-offtopic], the main Arch Linux social channel, both available on the [https://freenode.net/ Freenode] network.<br />
<br />
The central topic for '''#archlinux''' is support and general discussion about Arch Linux. For a list of rules refer to the [[Code of conduct]] and [[Code of conduct#IRC]]. For a list of commonly used abbreviations, see [[Arch terminology]] and [http://leonardo.spidernet.net/Copernicus/831/mirc/tips5/jarg.html IRC Jargon].<br />
<br />
{{Note|Due to abuse various gateways and web clients may be banned at times. If you experience trouble use a "''proper''" IRC client or ask one of the operators for a ban exemption ({{ic|+e}}).}}<br />
<br />
To join the channels, you need an IRC client. The [[installation]] environment includes the [[Irssi]] client. See [[List of applications/Internet#IRC clients]] or [[Wikipedia:Comparison of Internet Relay Chat clients]] for a list.<br />
<br />
=== Registration ===<br />
<br />
'''#archlinux''' and '''#archlinux-offtopic''' now have the channel mode set to {{ic|+r}} and {{ic|+q $~a}}. This means you need to be identified to {{ic|NickServ}} to join the channel and send messages, respectively. We needed to do this to reduce spam. <br />
<br />
To register with NickServ, follow the [https://freenode.net/kb/answer/registration freenode FAQ], as well as {{ic|NickServ help}} when connected to ''chat.freenode.net'':<br />
<br />
/query NickServ HELP REGISTER<br />
/query NickServ HELP IDENTIFY<br />
<br />
If you are not registered and identified, you will be forwarded to '''#archlinux-unregistered'''. You can get a list of people who can help you by typing {{ic|/msg ChanServ ACCESS #archlinux LIST}}, or join #freenode and ask there.<br />
<br />
{{Note|<br />
* If {{ic|/query}} happens to not work in your client you can try using either {{ic|/quote NickServ <command>}} or {{ic|/msg NickServ <command>}}.<br />
* Some IRC clients have a race-condition where they try to autojoin channels before you have been identified with NickServ, and to solve it you need to enable SASL. Either look up your IRC client's documentation or look at the freenode [https://freenode.net/kb/answer/sasl SASL page] to find instructions for how to enable it.<br />
}}<br />
<br />
=== Channel operators ===<br />
<br />
{{Note|Arch operators are ops in both '''#archlinux''' and '''#archlinux-offtopic'''. See the list below, or run {{ic|/msg phrik listops}} on freenode.}}<br />
<br />
If you for some reason need the help of an op, do not be shy to {{ic|/query}} or {{ic|/msg}} us. Here is the list of ops as of 8 Feb 2016:<br />
<br />
* alad<br />
* brain0<br />
* falconindy<br />
* gehidore<br />
* grawity<br />
* heftig<br />
* jelle<br />
* MrElendig / Mion<br />
* Namarrgon<br />
* pid1<br />
* tigrmesh / tigr<br />
* vodik<br />
* wonder / ioni<br />
<br />
== Other channels ==<br />
<br />
The size of our community led to the creation of multiple IRC channels. To get a list of all channels on '''[ircs://chat.freenode.net chat.freenode.net]''' that contain {{ic|archlinux}} in their name, use the command {{ic|/query alis list *archlinux*}}.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux64 #archlinux64]<br />
| x86_64 specific discussion channel, mostly in English<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aur #archlinux-aur]<br />
| [[AUR]] general discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aurweb #archlinux-aurweb]<br />
| [https://projects.archlinux.org/aurweb.git/ aurweb] development discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-bugs #archlinux-bugs]<br />
| Bug-centric discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-classroom #archlinux-classroom]<br />
| A project that develops and hosts classes for the Arch Linux community.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-devops #archlinux-devops]<br />
| Infrastructure and devops discussions.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-multilib #archlinux-multilib]<br />
| Arch Linux Multilib Project discussion and packaging<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-newbie #archlinux-newbie]<br />
| A space to learn, try new things, and ask for help without fear of ridicule.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pacman #archlinux-pacman]<br />
| [[Pacman]] development and discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-projects #archlinux-projects]<br />
| Projects development and discussion (mkinitcpio, abs, dbscripts, devtools, ...)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-reproducible #archlinux-reproducible]<br />
| Discussion channel for achieving reproducible builds.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-security #archlinux-security]<br />
| Discussion of security issues within Arch packages.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-testing #archlinux-testing]<br />
| Discussion channel regarding the testing repositories.<br />
|- <br />
| [ircs://chat.freenode.net/archlinux-wiki #archlinux-wiki]<br />
| Discussion about [[ArchWiki:About|ArchWiki]], its articles and the [https://bbs.archlinux.org/ Arch Linux Forums].<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-women #archlinux-women]<br />
| Discussing gender and equality, mostly in English.<br />
|-<br />
| [ircs://chat.freenode.net/archaudio #archlinux-proaudio]<br />
| Discussion of [[Professional audio|Arch Linux Pro Audio]]. Users also in the unofficial #archaudio<br />
|}<br />
<br />
=== International IRC channels ===<br />
<br />
International discussions are available at the following channels, also located at the '''[ircs://chat.freenode.net chat.freenode.net]''' IRC network, unless stated otherwise.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-za #archlinux-za]<br />
| Discussion (Afrikaans, English)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-br #archlinux-br]<br />
| Discussion (Brazilian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cn #archlinux-cn]<br />
| Discussion (Chinese); also on '''[ircs://irc.oftc.net/arch-cn irc.oftc.net#arch-cn]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cr #archlinux-cr]<br />
| Discussion (Costa Rica)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.cz #archlinux.cz]<br />
| Discussion (Czech)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.dk #archlinux.dk]<br />
| Discussion (Danish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.fi #archlinux.fi]<br />
| Discussion (Finnish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-fr #archlinux-fr]<br />
| Discussion (French)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-gaelic #archlinux-gaelic]<br />
| Discussion (Gaelic)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.de #archlinux.de]<br />
| Discussion (German)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-greece #archlinux-greece]<br />
| Discussion (Greek)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-il #archlinux-il]<br />
| Discussion (Hebrew)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.hu #archlinux.hu]<br />
| Discussion (Hungarian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-it #archlinux-it]<br />
| Discussion (Italian); also on '''[irc://irc.azzurra.org/archlinux irc.azzurra.org#archlinux]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-nordics #archlinux-nordics]<br />
| Discussion (the nordics: Danish, Finnish, Norwegian and Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-kr #archlinux-kr]<br />
| Discussion (Korean)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ir #archlinux-ir]<br />
| Discussion (Persian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.org.pl #archlinux.org.pl]<br />
| Discussion (Polish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pt #archlinux-pt]<br />
| Discussion (Portuguese)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.ro #archlinux.ro]<br />
| Discussion (Romanian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ru #archlinux-ru]<br />
| Discussion (Russian); also on '''[irc://irc.mibbit.net/archlinux-ru irc.mibbit.net#archlinux-ru]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-rs #archlinux-rs]<br />
| Discussion (Serbian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-es #archlinux-es]<br />
| Discussion (Spanish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.se #archlinux.se]<br />
| Discussion (Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ve #archlinux-ve]<br />
| Discussion (Venezuela)<br />
|-<br />
| [ircs://chat.freenode.net/archlinuxvn #archlinuxvn]<br />
| Discussion (Vietnamese, Tiếng Việt)<br />
|}</div>Milkhttps://wiki.archlinux.org/index.php?title=Arch_IRC_channels&diff=509272Arch IRC channels2018-02-02T03:31:26Z<p>Milk: /* Other channels */ updated #archlinux-proaudio listing</p>
<hr />
<div>[[Category:Internet Relay Chat]]<br />
[[Category:About Arch]]<br />
[[es:IRC channel]]<br />
[[fr:IRC]]<br />
[[ja:IRC チャンネル]]<br />
[[pt:IRC channel]]<br />
[[ru:IRC channel]]<br />
[[sr:IRC channels]]<br />
[[zh-hans:IRC channel]]<br />
{{Related articles start}}<br />
{{Related|ArchWiki:IRC}}<br />
{{Related|International communities}}<br />
{{Related|phrik}}<br />
{{Related articles end}}<br />
{{Note|Do not edit this page unless you are a channel op in #archlinux. You are welcome to use the discussion page.}}<br />
<br />
== Main channels ==<br />
<br />
{{Warning|Channel statistics are logged for [http://www.hax0r.se/aotstats.html #archlinux-offtopic]. Speak to ''dunz0r'' if you would like to opt-out permanently.}}<br />
<br />
This section is about [ircs://chat.freenode.net/archlinux #archlinux], the main Arch Linux support [[wikipedia:Internet Relay Chat|IRC]] channel, and [ircs://chat.freenode.net/archlinux-offtopic #archlinux-offtopic], the main Arch Linux social channel, both available on the [https://freenode.net/ Freenode] network.<br />
<br />
The central topic for '''#archlinux''' is support and general discussion about Arch Linux. For a list of rules refer to the [[Code of conduct]] and [[Code of conduct#IRC]]. For a list of commonly used abbreviations, see [[Arch terminology]] and [http://leonardo.spidernet.net/Copernicus/831/mirc/tips5/jarg.html IRC Jargon].<br />
<br />
{{Note|Due to abuse various gateways and web clients may be banned at times. If you experience trouble use a "''proper''" IRC client or ask one of the operators for a ban exemption ({{ic|+e}}).}}<br />
<br />
To join the channels, you need an IRC client. The [[installation]] environment includes the [[Irssi]] client. See [[List of applications/Internet#IRC clients]] or [[Wikipedia:Comparison of Internet Relay Chat clients]] for a list.<br />
<br />
=== Registration ===<br />
<br />
'''#archlinux''' and '''#archlinux-offtopic''' now have the channel mode set to {{ic|+r}} and {{ic|+q $~a}}. This means you need to be identified to {{ic|NickServ}} to join the channel and send messages, respectively. We needed to do this to reduce spam. <br />
<br />
To register with NickServ, follow the [https://freenode.net/kb/answer/registration freenode FAQ], as well as {{ic|NickServ help}} when connected to ''chat.freenode.net'':<br />
<br />
/query NickServ HELP REGISTER<br />
/query NickServ HELP IDENTIFY<br />
<br />
If you are not registered and identified, you will be forwarded to '''#archlinux-unregistered'''. You can get a list of people who can help you by typing {{ic|/msg ChanServ ACCESS #archlinux LIST}}, or join #freenode and ask there.<br />
<br />
{{Note|<br />
* If {{ic|/query}} happens to not work in your client you can try using either {{ic|/quote NickServ <command>}} or {{ic|/msg NickServ <command>}}.<br />
* Some IRC clients have a race-condition where they try to autojoin channels before you have been identified with NickServ, and to solve it you need to enable SASL. Either look up your IRC client's documentation or look at the freenode [https://freenode.net/kb/answer/sasl SASL page] to find instructions for how to enable it.<br />
}}<br />
<br />
=== Channel operators ===<br />
<br />
{{Note|Arch operators are ops in both '''#archlinux''' and '''#archlinux-offtopic'''. See the list below, or run {{ic|/msg phrik listops}} on freenode.}}<br />
<br />
If you for some reason need the help of an op, do not be shy to {{ic|/query}} or {{ic|/msg}} us. Here is the list of ops as of 8 Feb 2016:<br />
<br />
* alad<br />
* brain0<br />
* falconindy<br />
* gehidore<br />
* grawity<br />
* heftig<br />
* jelle<br />
* MrElendig / Mion<br />
* Namarrgon<br />
* pid1<br />
* tigrmesh / tigr<br />
* vodik<br />
* wonder / ioni<br />
<br />
== Other channels ==<br />
<br />
The size of our community led to the creation of multiple IRC channels. To get a list of all channels on '''[ircs://chat.freenode.net chat.freenode.net]''' that contain {{ic|archlinux}} in their name, use the command {{ic|/query alis list *archlinux*}}.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux64 #archlinux64]<br />
| x86_64 specific discussion channel, mostly in English<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aur #archlinux-aur]<br />
| [[AUR]] general discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aurweb #archlinux-aurweb]<br />
| [https://projects.archlinux.org/aurweb.git/ aurweb] development discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-bugs #archlinux-bugs]<br />
| Bug-centric discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-classroom #archlinux-classroom]<br />
| A project that develops and hosts classes for the Arch Linux community.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-devops #archlinux-devops]<br />
| Infrastructure and devops discussions.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-multilib #archlinux-multilib]<br />
| Arch Linux Multilib Project discussion and packaging<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-newbie #archlinux-newbie]<br />
| A space to learn, try new things, and ask for help without fear of ridicule.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pacman #archlinux-pacman]<br />
| [[Pacman]] development and discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-projects #archlinux-projects]<br />
| Projects development and discussion (mkinitcpio, abs, dbscripts, devtools, ...)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-reproducible #archlinux-reproducible]<br />
| Discussion channel for achieving reproducible builds.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-security #archlinux-security]<br />
| Discussion of security issues within Arch packages.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-testing #archlinux-testing]<br />
| Discussion channel regarding the testing repositories.<br />
|- <br />
| [ircs://chat.freenode.net/archlinux-wiki #archlinux-wiki]<br />
| Discussion about [[ArchWiki:About|ArchWiki]], its articles and the [https://bbs.archlinux.org/ Arch Linux Forums].<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-women #archlinux-women]<br />
| Discussing gender and equality, mostly in English.<br />
|-<br />
| [ircs://chat.freenode.net/archaudio #archlinux-proaudio]<br />
| Discussion of [[Professional audio|Arch Linux Pro Audio]]. Users also the unofficial #archaudio<br />
|}<br />
<br />
=== International IRC channels ===<br />
<br />
International discussions are available at the following channels, also located at the '''[ircs://chat.freenode.net chat.freenode.net]''' IRC network, unless stated otherwise.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-za #archlinux-za]<br />
| Discussion (Afrikaans, English)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-br #archlinux-br]<br />
| Discussion (Brazilian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cn #archlinux-cn]<br />
| Discussion (Chinese); also on '''[ircs://irc.oftc.net/arch-cn irc.oftc.net#arch-cn]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cr #archlinux-cr]<br />
| Discussion (Costa Rica)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.cz #archlinux.cz]<br />
| Discussion (Czech)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.dk #archlinux.dk]<br />
| Discussion (Danish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.fi #archlinux.fi]<br />
| Discussion (Finnish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-fr #archlinux-fr]<br />
| Discussion (French)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-gaelic #archlinux-gaelic]<br />
| Discussion (Gaelic)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.de #archlinux.de]<br />
| Discussion (German)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-greece #archlinux-greece]<br />
| Discussion (Greek)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-il #archlinux-il]<br />
| Discussion (Hebrew)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.hu #archlinux.hu]<br />
| Discussion (Hungarian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-it #archlinux-it]<br />
| Discussion (Italian); also on '''[irc://irc.azzurra.org/archlinux irc.azzurra.org#archlinux]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-nordics #archlinux-nordics]<br />
| Discussion (the nordics: Danish, Finnish, Norwegian and Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-kr #archlinux-kr]<br />
| Discussion (Korean)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ir #archlinux-ir]<br />
| Discussion (Persian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.org.pl #archlinux.org.pl]<br />
| Discussion (Polish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pt #archlinux-pt]<br />
| Discussion (Portuguese)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.ro #archlinux.ro]<br />
| Discussion (Romanian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ru #archlinux-ru]<br />
| Discussion (Russian); also on '''[irc://irc.mibbit.net/archlinux-ru irc.mibbit.net#archlinux-ru]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-rs #archlinux-rs]<br />
| Discussion (Serbian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-es #archlinux-es]<br />
| Discussion (Spanish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.se #archlinux.se]<br />
| Discussion (Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ve #archlinux-ve]<br />
| Discussion (Venezuela)<br />
|-<br />
| [ircs://chat.freenode.net/archlinuxvn #archlinuxvn]<br />
| Discussion (Vietnamese, Tiếng Việt)<br />
|}</div>Milkhttps://wiki.archlinux.org/index.php?title=Envy24control&diff=509072Envy24control2018-01-31T03:01:17Z<p>Milk: /* See also */ web archive for d1010lt</p>
<hr />
<div>[[Category:Sound]]<br />
[[Category:Multimedia]]<br />
[[ja:Envy24control]]<br />
{{Expansion|Some sections are blank and need to be filled in with relevant content.}}<br />
<br />
''envy24control'' is an application included in the {{pkg|alsa-tools}} package. It enables controlling the digital mixer, channel gains, and other hardware settings for sound cards based on the VIA Ice1712 chipset (A.K.A. Envy24).<br />
<br />
''envy24control'''s user interface is loosely based on the Delta Control Panel software included with the purchase of M-Audio Delta series audio cards -- most of the tabs, controls, and capabilities are similar in the two applications. However, because they are two separate applications, the user manual for Delta Control Panel software is only marginally useful for ''envy24control'' users. This article aims to provide usage guidance for those using ice1712-based cards and ''envy24control'' with Arch Linux.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{pkg|alsa-tools}} package, which includes ''envy24control''.<br />
<br />
{{Note|{{AUR|mudita24-svn}} is an alternative to ''envy24control'' available in the [[AUR]]. It is identical to ''envy24control'', except that it has some clearer UI labels, peak meter indicators, and a few other bells and whistles.}}<br />
<br />
== Supported cards ==<br />
<br />
''envy24control'' is designed to control ice1712-based cards, including, but not limited to:<br />
<br />
* M-Audio Delta 1010<br />
* M-Audio Delta 1010LT<br />
* M-Audio Delta DiO 2496<br />
* M-Audio Delta 66<br />
* M-Audio Delta 44<br />
* M-Audio Delta 410<br />
* M-Audio Audiophile 2496<br />
* Terratec EWS 88MT<br />
* EWS 88D<br />
* EWX 24/96<br />
* DMX 6Fire<br />
* Phase 88<br />
* Hoontech Soundtrack DSP 24<br />
* Soundtrack DSP 24 Value<br />
* Soundtrack DSP 24 Media 7.1<br />
* Event Electronics EZ8<br />
* Digigram VX442<br />
* Lionstracs<br />
* Mediastation<br />
* Terrasoniq TS 88<br />
* Roland/Edirol DA-2496<br />
<br />
=== Understanding your sound card ===<br />
<br />
If you have one of the cards in the list above, know that it has a hardware digital audio mixer built into it (the Ice1712 chip). This mixer accepts digital audio streams from hardware inputs and outgoing streams from software audio devices (such as those provided by [[JACK]]), mixes them internally, and then sends the mixed output to the card's hardware outputs. ''envy24control'' controls this mixer.<br />
<br />
==== Read your sound card manual ====<br />
<br />
It is vital that you understand your sound card's features and capabilities. If you do not, ''envy24control'' will not make working with the card any clearer or easier. It is more likely to do just the opposite. Save yourself some frustration: read the manual.<br />
<br />
== Application overview ==<br />
<br />
=== Monitor Inputs ===<br />
<br />
The Monitor Inputs page is effectively a mixer for your card's ''hardware'' inputs. It enables you to meter the "post-gain" incoming audio signals and adjust their volumes in the card's on-board "monitor" mixer. For each physical card input, there is a pair of volume faders, mute buttons, and pre-fader level meters. On the far left, there is a meter indicating the overall signal level being routed to the on-board mixer's "pre out." The output of this digital mixer may be assigned to any of your card's hardware outputs on the Patchbay /Router page, by selecting "Digital Mix L/R." (Typically, you would do this for the hardware outputs that your monitor speakers are connected to, e.g. "H/W OUT 1/2.")<br />
<br />
==== Meters ====<br />
<br />
Each mixer input channel has its own level meter that indicates the "pre-fader" levels of the incoming audio signal and are therefore not affected by the fader settings. Each input's meters are color-coded into three sections: green, orange, and red. The green section is a ''safe'' zone; most incoming audio signals should fill at least this section of the meter when recording. The orange section represents a ''hotter'' zone; it is both safe and recommended to adjust the incoming signal to meter mostly in this zone when recording. The red zone represents ''danger''; when the signal hits 0dB, overload and audio clipping may occur. Adjust the output level of your audio source along with the appropriate "ADC" faders on the "Analog Volume" page so that the incoming audio levels do not peak in the red very often or for too long. Let your ears be the judge. See [[#Analog Volume]].<br />
<br />
==== Faders ====<br />
<br />
The faders control the signal level in the card's digital mix. They do not control the level of the ''incoming'' audio signals -- they are "post-meter." There is no gain control; the faders can only attenuate (reduce) the signal levels. A pair of faders can be "ganged", so that both channels can be controlled as a stereo pair. The mute buttons do exactly what you would expect: they mute the outgoing channel.<br />
<br />
A mono signal can be panned by setting the stereo faders or mute controls accordingly. For example, to pan hard left, mute the right channel. To pan soft right, set the right fader higher than the left. To preserve a stereo signal coming into 2 hardware inputs -- "H/W In 1/2", for example -- mute the right fader on "H/W In 1", and mute the left fader on "H/W In 2."<br />
<br />
The highest level setting on the faders is 0dB, or ''Unity Gain'', which is an easy way of indicating a gain of factor 1 (equivalent to 0dB) where both input and output are at the same voltage level and impedance. Since there is no amplification available, clipping is impossible on the outgoing signal. If the incoming audio signal levels are ideal -- say, -12dB to -3dB (in the orange) -- it is perfectly safe to set the faders to 0dB (the highest level setting.) <br />
<br />
The overall audio signal level of the on-board digital mixer's "pre-out" is indicated by the large meters on the far left, labeled "Digital Mixer." This meter is visible on all pages in the application's UI and displays the same information regardless of which page is active.<br />
<br />
==== Tips and tricks ====<br />
<br />
* The input meters display the audio signal levels being sent to the digital mixer on your card -- they are "pre-fader."<br />
<br />
* To control the incoming audio signal level, adjust the the appropriate "ADC" fader(s) on the "Analog Volume" page in conjunction with the output level of your source. E.g., your outboard mixer, your mic pre-amp, etc.<br />
<br />
{{Tip|As a rule of thumb, set the appropriate "ADC" fader(s) to 127. This is unity gain (0dB) and will pass the audio source's output signal through as-is to the digital mixer (with no amplification or attenuation). See [[#Analog Volume]].}}<br />
<br />
* The incoming audio signal levels and input meters are not affected by adjustments to the faders or mute buttons on the "Monitor Inputs" page.<br />
<br />
* The volume controls (faders and mute buttons) determine the audio signal level in the card's on-board digital mixer.<br />
<br />
=== Monitor PCMs ===<br />
<br />
{{Tip|For the inquisitive: PCM is an acronym for [[wikipedia:Pulse-code_modulation|Pulse Code Modulation]].}}<br />
<br />
The Monitor PCMs page is effectively a monitor mixer for your card's ''software'' inputs. Software inputs are the digital audio streams sent by your software applications. Typically, on a Linux-based Digital Audio Workstation (DAW), this means [[JACK]]. The power of this functionality is most apparent when "Digital Mix" is connected to a pair of audio outputs in the ''Patchbay / Router'' tab, and you are mixing multiple sources from both hardware and software inputs See [[#Usage examples]].<br />
<br />
The faders, meters, and mute buttons operate identically to those on the Monitor Inputs page.<br />
<br />
==== Tips and tricks ====<br />
<br />
* The available software inputs are displayed as "playback_''X''", where ''X'' is a sequential number, in [[JACK]]'s Connections dialog (in the "Writable Clients / Input Ports" box.) The number of available inputs will vary depending on your specific card.<br />
<br />
* "PCM Out 1/2" are typically used by applications like Ardour for their main outs. This is so common, the default signal routed to your card's physical outputs come from "PCM Out 1/2." Therefore, when using your card for monitoring rather than Ardour's, use "PCM Out 3" or higher to monitor the signal you are actively recording to maintain mixing flexibility. See [[#Usage examples]].<br />
<br />
* When connecting the "capture_1/2" output port to input ports in [[JACK]]'s Connections dialog, be sure to mute the "H/W In 1/2" on the Monitor Inputs page. For example, if you use JACK to connect "capture_1/2" to "playback_3/4", not muting "H/W In 1/2" on the Monitor Inputs page will result in a combination of the direct input hardware signal with a software version of the same signal in the mixer (remember your card is a mixer!), and this usually produces signal phase problems or worse. Depending on the situation, you could even produce a signal loop.<br />
<br />
=== Patchbay / Router ===<br />
<br />
This page allows you to connect each of the card's hardware outputs to specific audio sources within the card's board.<br />
<br />
The two leftmost vertical columns, "H/W Out 1/2 (L/R)", connects these outputs to one of these signal sources:<br />
<br />
# The default setting, "PCM Out 1/2", is your music software outputs. For example, Ardour's main outs connected to "playback_1/2" via [[JACK]]'s Connections dialog. <br />
# "Digital Mix" is the output of the card's mixer.This handy option allows you to mix hardware and software audio sources directly in your card's mixer with near-zero latency.<br />
# "S/PDIF In L/R" is a direct connection to the card's S/PDIF inputs.<br />
# "H/W In 1/2" is a direct connection to the card's analog audio inputs.<br />
<br />
The two rightmost columns, "S/PDIF Out 1/2 (L/R)", function identically as the above, but the first option is labeled differently (and a bit confusingly):<br />
<br />
# The "S/PDIF Out 1/2 (L/R)" option connects these outputs to your music software outputs. Again, for example, Ardour's main outs connected via [[JACK]].<br />
<br />
==== Tips and tricks ====<br />
<br />
* Typically, you would select the same option for both the L and R of a stereo output pair. (In fact, the Delta Control Panel software that ships with M-Audio sound cards forces this behavior: there is no separate L and R channel on this page. The ''envy24control'' developers provided additional flexibility in this regard.)<br />
<br />
* Depending on your card, the number of ''"playback_X"'' channels available in [[JACK]]'s Connections dialog will vary. Usually, the two highest-numbered channels are "S/PDIF Out 1/2 (L/R)." This may or may not be the case with your configuration; take a few minutes to experiment and make a note.<br />
<br />
* Learn to use the "Digital Mix" option. It is an extremely powerful feature that allows you to take some of the audio processing load off your recording software by handling the monitor mix with your card's hardware instead. This also provides the added benefit of near-zero latency while monitoring. See [[#Usage examples]].<br />
<br />
* It should be fairly clear by now that the on-board mixer and patchbay / router in your sound card is highly versatile. You may want to re-read this page and make some practice adjustments to become proficient in routing and mixing with ''envy24control''. If in the process you end up confused, you can set the card back to its default configuration by selecting the topmost option in all of the columns on the "Patchbay / Router" page.<br />
<br />
=== Hardware Settings ===<br />
<br />
==== Master Clock ====<br />
<br />
This section allows you to select the source and codec sample rate of the card's master clock. ''Int'' indicates a selection that will rely on the card's ''internal'' crystal for the clock. ''S/PDIF In'' is an advanced capability most often used when synchronizing two or more Ice1712-based cards. To achieve this, one card is set to an ''Int'' rate -- it will serve as the master clock. The "S/PDIF Outs" of the master clock card are connected to the "S/PDIF Ins" of the second card, and that card's clock is set to ''S/PDIF In'', effectively "chaining" them together.<br />
<br />
When using an ''Int'' option, ''Int 44100'' (44.1 kHz) and higher are recommended for digital recording.<br />
<br />
==== Rate State ====<br />
<br />
When ''Reset'' is selected, the codec sample rate selected in the "Master Clock" section is regarded as the "idle" sample rate. This means that when your card is in use by a software application such as [[JACK]], the rate is set by that application. The card will then switch (if necessary) to the selected sample rate whenever it's not in use by an application. Think of the complete name for this tickbox as ''Reset Rate When Idle''.<br />
<br />
The codec sample rate can be locked to a specific rate by selecting ''Locked''. When you do this, the card will disallow applications from setting the sample rate differently. If an application attempts to do so, you will most likely experience errors and/or XRUNS.<br />
<br />
{{Tip|It's a common misconception that the selected clock rate and the rate of your software applications '''must''' match, or you'll get oodles of XRUNS. In practice, as long as ''Locked'' is not selected, this should not be the case (and the author has never experienced this being a problem). Of course, your mileage may vary depending on your setup. To be sure, setting all applications' clock rates consistently eliminates one more possible source of XRUNS.}}<br />
<br />
===== Settings combinations and their behaviors =====<br />
<br />
{| class="wikitable"<br />
!align="center"|Locked !! Reset !! Behavior<br />
|-<br />
|align="center"| - ||align="center"| X || Software applications can set codec sample rate; card returns to selected rate when not in use (default and recommended)<br />
|-<br />
|align="center"| - ||align="center"| - || Software applications can set codec sample rate; card leaves rate at last rate specified when not in use<br />
|-<br />
|align="center"| X ||align="center"| - || Codec sample rate is locked to selected rate; applications may not specify other rates (beware XRUNS!)<br />
|}<br />
<br />
==== Actual Rate ====<br />
<br />
This displays the current codec sample rate of the card. Depending on your settings, this may vary as it's controlled by applications such as [[JACK]] or Ardour and/or by ''envy24control'' itself. See [[#Master Clock]] and [[#Rate State]] for details.<br />
<br />
=== Analog Volume ===<br />
<br />
The faders on the "Analog Volume" page control the signal levels of the digital-to-analog (DAC) and analog-to-digital (ADC) converters of your card.<br />
<br />
==== DAC faders ====<br />
<br />
These faders are attenuators for the level of the outgoing analog audio signal after it's been converted from digital audio and sent to the hardware outputs. These are the "post-outs" of your card; think of them like the "main outs" or "main mix" faders on a hardware mixer. A value of 127 (maximum volume) is 0dB, or unity gain.<br />
<br />
==== ADC faders ====<br />
<br />
The ADC faders control attenuation or amplification of incoming analog audio signals being converted from your card's hardware inputs. They are effectively "gain" controls. A value of 127 is 0dB, or unity gain. Setting a fader all the way up provides +18dB of gain. Setting the fader all the way down attenuates the signal by -63dB, effectively muting the audio signal.<br />
<br />
==== Tips and tricks ====<br />
<br />
* One of the most common solutions when you can't hear your incoming audio signal is to check the ADC faders for the hardware inputs into which your source is plugged. Until you adjust the ADC faders for the appropriate channels, the signal is effectively muted.<br />
<br />
* Setting the "ADC" faders to 127 (0dB) is the recommended starting value when adjusting incoming audio signal levels. This way, clipping is impossible in the card's digital mixer, and you only need to use your audio source's output level controls for adjustments.<br />
<br />
* If your audio source's maximum output levels are too low and do not meter in the orange on the "Monitor Inputs" page when the ADC fader is set to 127, slide the ADC fader up in small increments to amplify the signal until the desired levels are reached. <br />
<br />
{{Note|Using the ADC's amplifier is typically not ideal because you're likely amplifying a weak signal -- noise and all. The ideal solution is to find an external way to boost your audio source's signal. For example, use a mic preamp, route your guitar through a direct box, etc.}} <br />
<br />
* The numbering of the faders is zero-based. So, "DAC 0" corresponds to "H/W Out 1 (L)", "DAC 1" corresponds to "H/W Out 2 (R)", and so on. This is also true for the "ADC" faders.<br />
<br />
== Usage examples ==<br />
<br />
=== Recording a single track in Ardour (Ardour does monitoring) ===<br />
<br />
This example assumes you have a mono audio source plugged into your card's analog input "H/W In 1." For example, a microphone through a pre-amp.<br />
<br />
==== envy24control settings ====<br />
<br />
* All channels on the "Monitor Inputs" and "Monitor PCMs" pages muted and faders down. (This seems counter-intuitive at first, but remember that you are not using the mixer, so none of these controls matter in this example.)<br />
* On the "Patchbay / Router" page, select "PCM Out 1/2" in the "H/W Out 1/2 (L/R)" columns. This is where Ardour is sending its master outs.<br />
* On the "Analog Volume" page, set the appropriate faders (e.g., "DAC 0/1") to 127 (full volume), and set the "ADC 0" fader to 127 (unity gain or 0dB.)<br />
* On the "Monitor Inputs" page, watch the "H/W In 1" meter and adjust the output volume on your audio source until most peaks fall in the "orange" zone. This is about -12dB through -3dB.<br />
* Once the [[JACK]] connections are made as described below, you will also be able to meter Ardour's master out signal on "PCM Out 1/2" in the "Monitor PCMs" page.<br />
<br />
==== Ardour settings ====<br />
<br />
* Create a normal mono track. For this example, it will be called "Audio 1."<br />
* Under ''Options > Monitoring'', '''ensure''' that ''Ardour does monitoring'' is selected.<br />
* Ensure "Auto Input" is enabled; you can find the button in the upper right-hand corner. This will cause the signal for your track to toggle between the recorded track and the input signal, depending on whether or not the track is "armed" for recording.<br />
* After making the [[JACK]] connections as described below, arm "Audio 1" for recording and make any level adjustments in Ardour, using the "Audio 1" meter.<br />
<br />
==== JACK connections ====<br />
<br />
+-----------------------+ +-------------------+<br />
| OUTPUTS | | INPUTS |<br />
|-----------------------| |-------------------|<br />
| Ardour | | Ardour |<br />
| Audio 1/out 1 +---+ +-----------+ Audio 1/in 1 |<br />
| Audio 1/out 2 +-+ +---|-----------+ master/in 1 |<br />
| ... | +-----|-----------+ master/in 2 |<br />
| ... | | | |<br />
| master/out 1 +-------|-----+ | System |<br />
| master/out 2 +-------|---+ +-----+ playback_1 |<br />
| | | +-------+ playback_2 |<br />
| System | | | ... |<br />
| capture_1 +-------+ | |<br />
| capture_2 | | |<br />
| ... | | |<br />
+-----------------------+ +-------------------+<br />
<br />
=== Recording a single track in Ardour (Audio Hardware does monitoring) ===<br />
<br />
As with the first example, this example also assumes you have a mono audio source plugged into your card's analog input "H/W In 1." For example, a microphone through a pre-amp.<br />
<br />
==== envy24control settings ====<br />
<br />
* Mute all channels on the "Monitor Inputs" page. Watch the "H/W In 1" meter and adjust the output volume on your audio source until most peaks fall in the "orange" zone. This is about -12dB through -3dB.<br />
* On the "Patchbay / Router" page, select "Digital Mix" in the "H/W Out 1/2 (L/R)" columns.<br />
* On the "Analog Volume" page, set the appropriate faders (e.g., "DAC 0/1") to 127 (full volume), and set the "ADC 0" fader to 127 (unity gain or 0dB.)<br />
* On the "Monitor PCMs" page, unmute the L channel of "PCM Out 1" and set the fader to 20. Unmute the R channel of "PCM Out 2" and set the fader to 20. This will preserve the stereo field of Ardour's master outs.<br />
* Also on the "Monitor PCMs" page, unmute both the L and R channels of "PCM Out 3" and set the faders to 20. This is where [[JACK][] will be routing your incoming audio source's signal for monitoring.<br />
* After making the [[JACK]] connections as described below, use the faders on the "Monitor PCMs" page to adjust levels in your monitor mix. (This will make more sense once you have recorded a track: the playback will be routed to "PCM Out 1/2" because these are Ardour's master outs.)<br />
<br />
==== Ardour settings ====<br />
<br />
* Create a normal mono track. For this example, it will be called "Audio 1."<br />
* Under ''Options > Monitoring'', ensure that ''Audio Hardware does monitoring'' is selected. '''VERY IMPORTANT!'''<br />
* Ensure "Auto Input" is disabled; you can find the button in the upper right-hand corner. (This is optional, but helps to avoid confusion.)<br />
* After making the [[JACK]] connections as described below, arm "Audio 1" for recording and make any level adjustments in Ardour, using the "Audio 1" meter.<br />
<br />
==== JACK connections ====<br />
<br />
+-----------------------+ +-------------------+<br />
| OUTPUTS | | INPUTS |<br />
|-----------------------| |-------------------|<br />
| Ardour | | Ardour |<br />
| Audio 1/out 1 +---+ +-----------+ Audio 1/in 1 |<br />
| Audio 1/out 2 +-+ +---|-----------+ master/in 1 |<br />
| ... | +-----|-----------+ master/in 2 |<br />
| ... | | | |<br />
| master/out 1 +-------|-----+ | System |<br />
| master/out 2 +-------|---+ +-----+ playback_1 |<br />
| | | +-------+ playback_2 |<br />
| System | | +---+ playback_3 |<br />
| capture_1 +-------+-------+ | ... |<br />
| capture_2 | | |<br />
| ... | | |<br />
+-----------------------+ +-------------------+<br />
{{note|"capture_1" is connected to ''both'' "Ardour:Audio 1/in 1" and "System:playback_3."}}<br />
<br />
== See also ==<br />
<br />
''envy24control'' is loosely based on the UI and functionality provided by the Windows/Mac Delta Control Panel software that ships with M-Audio Delta series hardware. The documentation in the cards' user manual loosely applies; be prepared to spend some time experimenting and getting familiar with your card's capabilities and the software. Some manuals for popular Delta series cards:<br />
<br />
* [https://web.archive.org/web/20140611073921/http://www.m-audio.com/images/global/manuals/Delta1010LT-Manual.pdf Delta 1010LT]<br />
* [http://www.m-audio.com/images/global/manuals/Delta44_Manual.pdf Delta 44]{{Dead link|2017|06|02}}<br />
* [http://www.m-audio.com/images/global/manuals/070212_Delta66_UG_EN01.pdf Delta 66]{{Dead link|2017|06|02}}<br />
* [http://www.m-audio.com/images/global/manuals/Audiophile2496_Manual.pdf Delta Audiophile 2496]{{Dead link|2017|06|02}}</div>Milkhttps://wiki.archlinux.org/index.php?title=Arch_IRC_channels&diff=508591Arch IRC channels2018-01-27T00:32:06Z<p>Milk: /* Other channels */ add Professional_audio lnk to #archaudio desc</p>
<hr />
<div>[[Category:Internet Relay Chat]]<br />
[[Category:About Arch]]<br />
[[es:IRC channel]]<br />
[[fr:IRC]]<br />
[[ja:IRC チャンネル]]<br />
[[pt:IRC channel]]<br />
[[ru:IRC channel]]<br />
[[sr:IRC channels]]<br />
[[zh-hans:IRC channel]]<br />
{{Related articles start}}<br />
{{Related|ArchWiki:IRC}}<br />
{{Related|International communities}}<br />
{{Related|phrik}}<br />
{{Related articles end}}<br />
{{Note|Do not edit this page unless you are a channel op in #archlinux. You are welcome to use the discussion page.}}<br />
<br />
== Main channels ==<br />
<br />
{{Warning|Channel statistics are logged for [http://www.hax0r.se/aotstats.html #archlinux-offtopic]. Speak to ''dunz0r'' if you would like to opt-out permanently.}}<br />
<br />
This section is about [ircs://chat.freenode.net/archlinux #archlinux], the main Arch Linux support [[wikipedia:Internet Relay Chat|IRC]] channel, and [ircs://chat.freenode.net/archlinux-offtopic #archlinux-offtopic], the main Arch Linux social channel, both available on the [https://freenode.net/ Freenode] network.<br />
<br />
The central topic for '''#archlinux''' is support and general discussion about Arch Linux. For a list of rules refer to the [[Code of conduct]] and [[Code of conduct#IRC]]. For a list of commonly used abbreviations, see [[Arch terminology]] and [http://leonardo.spidernet.net/Copernicus/831/mirc/tips5/jarg.html IRC Jargon].<br />
<br />
{{Note|Due to abuse various gateways and web clients may be banned at times. If you experience trouble use a "''proper''" IRC client or ask one of the operators for a ban exemption ({{ic|+e}}).}}<br />
<br />
To join the channels, you need an IRC client. The [[installation]] environment includes the [[Irssi]] client. See [[List of applications/Internet#IRC clients]] or [[Wikipedia:Comparison of Internet Relay Chat clients]] for a list.<br />
<br />
=== Registration ===<br />
<br />
'''#archlinux''' and '''#archlinux-offtopic''' now have the channel mode set to {{ic|+r}} and {{ic|+q $~a}}. This means you need to be identified to {{ic|NickServ}} to join the channel and send messages, respectively. We needed to do this to reduce spam. <br />
<br />
To register with NickServ, follow the [https://freenode.net/kb/answer/registration freenode FAQ], as well as {{ic|NickServ help}} when connected to ''chat.freenode.net'':<br />
<br />
/query NickServ HELP REGISTER<br />
/query NickServ HELP IDENTIFY<br />
<br />
If you are not registered and identified, you will be forwarded to '''#archlinux-unregistered'''. You can get a list of people who can help you by typing {{ic|/msg ChanServ ACCESS #archlinux LIST}}, or join #freenode and ask there.<br />
<br />
{{Note|<br />
* If {{ic|/query}} happens to not work in your client you can try using either {{ic|/quote NickServ <command>}} or {{ic|/msg NickServ <command>}}.<br />
* Some IRC clients have a race-condition where they try to autojoin channels before you have been identified with NickServ, and to solve it you need to enable SASL. Either look up your IRC client's documentation or look at the freenode [https://freenode.net/kb/answer/sasl SASL page] to find instructions for how to enable it.<br />
}}<br />
<br />
=== Channel operators ===<br />
<br />
{{Note|Arch operators are ops in both '''#archlinux''' and '''#archlinux-offtopic'''. See the list below, or run {{ic|/msg phrik listops}} on freenode.}}<br />
<br />
If you for some reason need the help of an op, do not be shy to {{ic|/query}} or {{ic|/msg}} us. Here is the list of ops as of 8 Feb 2016:<br />
<br />
* alad<br />
* brain0<br />
* falconindy<br />
* gehidore<br />
* grawity<br />
* heftig<br />
* jelle<br />
* MrElendig / Mion<br />
* Namarrgon<br />
* pid1<br />
* tigrmesh / tigr<br />
* vodik<br />
* wonder / ioni<br />
<br />
== Other channels ==<br />
<br />
The size of our community led to the creation of multiple IRC channels. To get a list of all channels on '''[ircs://chat.freenode.net chat.freenode.net]''' that contain {{ic|archlinux}} in their name, use the command {{ic|/query alis list *archlinux*}}.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux64 #archlinux64]<br />
| x86_64 specific discussion channel, mostly in English<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aur #archlinux-aur]<br />
| [[AUR]] general discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aurweb #archlinux-aurweb]<br />
| [https://projects.archlinux.org/aurweb.git/ aurweb] development discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-bugs #archlinux-bugs]<br />
| Bug-centric discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-classroom #archlinux-classroom]<br />
| A project that develops and hosts classes for the Arch Linux community.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-devops #archlinux-devops]<br />
| Infrastructure and devops discussions.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pacman #archlinux-pacman]<br />
| [[Pacman]] development and discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-projects #archlinux-projects]<br />
| Projects development and discussion (mkinitcpio, abs, dbscripts, devtools, ...)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-multilib #archlinux-multilib]<br />
| Arch Linux Multilib Project discussion and packaging<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-newbie #archlinux-newbie]<br />
| A space to learn, try new things, and ask for help without fear of ridicule.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-reproducible #archlinux-reproducible]<br />
| Discussion channel for achieving reproducible builds.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-security #archlinux-security]<br />
| Discussion of security issues within Arch packages.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-testing #archlinux-testing]<br />
| Discussion channel regarding the testing repositories.<br />
|- <br />
| [ircs://chat.freenode.net/archlinux-wiki #archlinux-wiki]<br />
| Discussion about [[ArchWiki:About|ArchWiki]], its articles and the [https://bbs.archlinux.org/ Arch Linux Forums].<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-women #archlinux-women]<br />
| Discussing gender and equality, mostly in English.<br />
|-<br />
| [ircs://chat.freenode.net/archaudio #archaudio]<br />
| Discussion of [[Professional audio|Arch Linux Pro Audio.]]<br />
|}<br />
<br />
=== International IRC channels ===<br />
<br />
International discussions are available at the following channels, also located at the '''[ircs://chat.freenode.net chat.freenode.net]''' IRC network, unless stated otherwise.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-za #archlinux-za]<br />
| Discussion (Afrikaans, English)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-br #archlinux-br]<br />
| Discussion (Brazilian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cn #archlinux-cn]<br />
| Discussion (Chinese); also on '''[ircs://irc.oftc.net/arch-cn irc.oftc.net#arch-cn]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cr #archlinux-cr]<br />
| Discussion (Costa Rica)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.cz #archlinux.cz]<br />
| Discussion (Czech)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.dk #archlinux.dk]<br />
| Discussion (Danish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.fi #archlinux.fi]<br />
| Discussion (Finnish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-fr #archlinux-fr]<br />
| Discussion (French)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-gaelic #archlinux-gaelic]<br />
| Discussion (Gaelic)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.de #archlinux.de]<br />
| Discussion (German)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-greece #archlinux-greece]<br />
| Discussion (Greek)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-il #archlinux-il]<br />
| Discussion (Hebrew)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.hu #archlinux.hu]<br />
| Discussion (Hungarian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-it #archlinux-it]<br />
| Discussion (Italian); also on '''[irc://irc.azzurra.org/archlinux irc.azzurra.org#archlinux]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-nordics #archlinux-nordics]<br />
| Discussion (the nordics: Danish, Finnish, Norwegian and Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-kr #archlinux-kr]<br />
| Discussion (Korean)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ir #archlinux-ir]<br />
| Discussion (Persian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.org.pl #archlinux.org.pl]<br />
| Discussion (Polish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pt #archlinux-pt]<br />
| Discussion (Portuguese)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.ro #archlinux.ro]<br />
| Discussion (Romanian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ru #archlinux-ru]<br />
| Discussion (Russian); also on '''[irc://irc.mibbit.net/archlinux-ru irc.mibbit.net#archlinux-ru]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-rs #archlinux-rs]<br />
| Discussion (Serbian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-es #archlinux-es]<br />
| Discussion (Spanish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.se #archlinux.se]<br />
| Discussion (Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ve #archlinux-ve]<br />
| Discussion (Venezuela)<br />
|-<br />
| [ircs://chat.freenode.net/archlinuxvn #archlinuxvn]<br />
| Discussion (Vietnamese, Tiếng Việt)<br />
|}</div>Milkhttps://wiki.archlinux.org/index.php?title=Arch_IRC_channels&diff=508590Arch IRC channels2018-01-27T00:07:52Z<p>Milk: /* Other channels */ added #archaudio</p>
<hr />
<div>[[Category:Internet Relay Chat]]<br />
[[Category:About Arch]]<br />
[[es:IRC channel]]<br />
[[fr:IRC]]<br />
[[ja:IRC チャンネル]]<br />
[[pt:IRC channel]]<br />
[[ru:IRC channel]]<br />
[[sr:IRC channels]]<br />
[[zh-hans:IRC channel]]<br />
{{Related articles start}}<br />
{{Related|ArchWiki:IRC}}<br />
{{Related|International communities}}<br />
{{Related|phrik}}<br />
{{Related articles end}}<br />
{{Note|Do not edit this page unless you are a channel op in #archlinux. You are welcome to use the discussion page.}}<br />
<br />
== Main channels ==<br />
<br />
{{Warning|Channel statistics are logged for [http://www.hax0r.se/aotstats.html #archlinux-offtopic]. Speak to ''dunz0r'' if you would like to opt-out permanently.}}<br />
<br />
This section is about [ircs://chat.freenode.net/archlinux #archlinux], the main Arch Linux support [[wikipedia:Internet Relay Chat|IRC]] channel, and [ircs://chat.freenode.net/archlinux-offtopic #archlinux-offtopic], the main Arch Linux social channel, both available on the [https://freenode.net/ Freenode] network.<br />
<br />
The central topic for '''#archlinux''' is support and general discussion about Arch Linux. For a list of rules refer to the [[Code of conduct]] and [[Code of conduct#IRC]]. For a list of commonly used abbreviations, see [[Arch terminology]] and [http://leonardo.spidernet.net/Copernicus/831/mirc/tips5/jarg.html IRC Jargon].<br />
<br />
{{Note|Due to abuse various gateways and web clients may be banned at times. If you experience trouble use a "''proper''" IRC client or ask one of the operators for a ban exemption ({{ic|+e}}).}}<br />
<br />
To join the channels, you need an IRC client. The [[installation]] environment includes the [[Irssi]] client. See [[List of applications/Internet#IRC clients]] or [[Wikipedia:Comparison of Internet Relay Chat clients]] for a list.<br />
<br />
=== Registration ===<br />
<br />
'''#archlinux''' and '''#archlinux-offtopic''' now have the channel mode set to {{ic|+r}} and {{ic|+q $~a}}. This means you need to be identified to {{ic|NickServ}} to join the channel and send messages, respectively. We needed to do this to reduce spam. <br />
<br />
To register with NickServ, follow the [https://freenode.net/kb/answer/registration freenode FAQ], as well as {{ic|NickServ help}} when connected to ''chat.freenode.net'':<br />
<br />
/query NickServ HELP REGISTER<br />
/query NickServ HELP IDENTIFY<br />
<br />
If you are not registered and identified, you will be forwarded to '''#archlinux-unregistered'''. You can get a list of people who can help you by typing {{ic|/msg ChanServ ACCESS #archlinux LIST}}, or join #freenode and ask there.<br />
<br />
{{Note|<br />
* If {{ic|/query}} happens to not work in your client you can try using either {{ic|/quote NickServ <command>}} or {{ic|/msg NickServ <command>}}.<br />
* Some IRC clients have a race-condition where they try to autojoin channels before you have been identified with NickServ, and to solve it you need to enable SASL. Either look up your IRC client's documentation or look at the freenode [https://freenode.net/kb/answer/sasl SASL page] to find instructions for how to enable it.<br />
}}<br />
<br />
=== Channel operators ===<br />
<br />
{{Note|Arch operators are ops in both '''#archlinux''' and '''#archlinux-offtopic'''. See the list below, or run {{ic|/msg phrik listops}} on freenode.}}<br />
<br />
If you for some reason need the help of an op, do not be shy to {{ic|/query}} or {{ic|/msg}} us. Here is the list of ops as of 8 Feb 2016:<br />
<br />
* alad<br />
* brain0<br />
* falconindy<br />
* gehidore<br />
* grawity<br />
* heftig<br />
* jelle<br />
* MrElendig / Mion<br />
* Namarrgon<br />
* pid1<br />
* tigrmesh / tigr<br />
* vodik<br />
* wonder / ioni<br />
<br />
== Other channels ==<br />
<br />
The size of our community led to the creation of multiple IRC channels. To get a list of all channels on '''[ircs://chat.freenode.net chat.freenode.net]''' that contain {{ic|archlinux}} in their name, use the command {{ic|/query alis list *archlinux*}}.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux64 #archlinux64]<br />
| x86_64 specific discussion channel, mostly in English<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aur #archlinux-aur]<br />
| [[AUR]] general discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-aurweb #archlinux-aurweb]<br />
| [https://projects.archlinux.org/aurweb.git/ aurweb] development discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-bugs #archlinux-bugs]<br />
| Bug-centric discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-classroom #archlinux-classroom]<br />
| A project that develops and hosts classes for the Arch Linux community.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-devops #archlinux-devops]<br />
| Infrastructure and devops discussions.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pacman #archlinux-pacman]<br />
| [[Pacman]] development and discussion<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-projects #archlinux-projects]<br />
| Projects development and discussion (mkinitcpio, abs, dbscripts, devtools, ...)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-multilib #archlinux-multilib]<br />
| Arch Linux Multilib Project discussion and packaging<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-newbie #archlinux-newbie]<br />
| A space to learn, try new things, and ask for help without fear of ridicule.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-reproducible #archlinux-reproducible]<br />
| Discussion channel for achieving reproducible builds.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-security #archlinux-security]<br />
| Discussion of security issues within Arch packages.<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-testing #archlinux-testing]<br />
| Discussion channel regarding the testing repositories.<br />
|- <br />
| [ircs://chat.freenode.net/archlinux-wiki #archlinux-wiki]<br />
| Discussion about [[ArchWiki:About|ArchWiki]], its articles and the [https://bbs.archlinux.org/ Arch Linux Forums].<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-women #archlinux-women]<br />
| Discussing gender and equality, mostly in English.<br />
|-<br />
| [ircs://chat.freenode.net/archaudio #archaudio]<br />
| Discussion of Arch Linux Pro Audio.<br />
|}<br />
<br />
=== International IRC channels ===<br />
<br />
International discussions are available at the following channels, also located at the '''[ircs://chat.freenode.net chat.freenode.net]''' IRC network, unless stated otherwise.<br />
<br />
{| class="wikitable sortable"<br />
! scope="col" width="180px" | Channel <br />
! scope="col" width="500px" | Description<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-za #archlinux-za]<br />
| Discussion (Afrikaans, English)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-br #archlinux-br]<br />
| Discussion (Brazilian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cn #archlinux-cn]<br />
| Discussion (Chinese); also on '''[ircs://irc.oftc.net/arch-cn irc.oftc.net#arch-cn]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-cr #archlinux-cr]<br />
| Discussion (Costa Rica)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.cz #archlinux.cz]<br />
| Discussion (Czech)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.dk #archlinux.dk]<br />
| Discussion (Danish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.fi #archlinux.fi]<br />
| Discussion (Finnish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-fr #archlinux-fr]<br />
| Discussion (French)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-gaelic #archlinux-gaelic]<br />
| Discussion (Gaelic)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.de #archlinux.de]<br />
| Discussion (German)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-greece #archlinux-greece]<br />
| Discussion (Greek)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-il #archlinux-il]<br />
| Discussion (Hebrew)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.hu #archlinux.hu]<br />
| Discussion (Hungarian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-it #archlinux-it]<br />
| Discussion (Italian); also on '''[irc://irc.azzurra.org/archlinux irc.azzurra.org#archlinux]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-nordics #archlinux-nordics]<br />
| Discussion (the nordics: Danish, Finnish, Norwegian and Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-kr #archlinux-kr]<br />
| Discussion (Korean)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ir #archlinux-ir]<br />
| Discussion (Persian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.org.pl #archlinux.org.pl]<br />
| Discussion (Polish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-pt #archlinux-pt]<br />
| Discussion (Portuguese)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.ro #archlinux.ro]<br />
| Discussion (Romanian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ru #archlinux-ru]<br />
| Discussion (Russian); also on '''[irc://irc.mibbit.net/archlinux-ru irc.mibbit.net#archlinux-ru]'''<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-rs #archlinux-rs]<br />
| Discussion (Serbian)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-es #archlinux-es]<br />
| Discussion (Spanish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux.se #archlinux.se]<br />
| Discussion (Swedish)<br />
|-<br />
| [ircs://chat.freenode.net/archlinux-ve #archlinux-ve]<br />
| Discussion (Venezuela)<br />
|-<br />
| [ircs://chat.freenode.net/archlinuxvn #archlinuxvn]<br />
| Discussion (Vietnamese, Tiếng Việt)<br />
|}</div>Milk