mirror of
https://github.com/owntone/owntone-server.git
synced 2025-04-09 22:20:06 -04:00
[docs] Fix spelling mistakes and extraneous spaces
This commit is contained in:
parent
1e6999587a
commit
815e7b45d2
@ -1,6 +1,6 @@
|
|||||||
# Running Multiple Instances
|
# Running Multiple Instances
|
||||||
|
|
||||||
To run multiple instances of owntone on a server, you should copy
|
To run multiple instances of OwnTone on a server, you should copy
|
||||||
`/etc/owntone.conf` to `/etc/owntone-zone.conf` (for each `zone`) and
|
`/etc/owntone.conf` to `/etc/owntone-zone.conf` (for each `zone`) and
|
||||||
modify the following to be unique across all instances:
|
modify the following to be unique across all instances:
|
||||||
|
|
||||||
@ -17,9 +17,8 @@ modify the following to be unique across all instances:
|
|||||||
Then run `owntone -c /etc/owntone-zone.conf` to run owntone with the new
|
Then run `owntone -c /etc/owntone-zone.conf` to run owntone with the new
|
||||||
zone configuration.
|
zone configuration.
|
||||||
|
|
||||||
Owntone has a `systemd` template which lets you run this automatically
|
OwnTone has a `systemd` template which lets you run this automatically
|
||||||
on systems that use systemd. You can start or enable the service for
|
on systems that use systemd. You can start or enable the service for
|
||||||
a `zone` by `sudo systemctl start owntone@zone` and check that it is
|
a `zone` by `sudo systemctl start owntone@zone` and check that it is
|
||||||
running with `sudo systemctl status owntone@zone`. Use `sudo
|
running with `sudo systemctl status owntone@zone`. Use `sudo
|
||||||
systemctl enable ownton@zone` to get the service to start on reboot.
|
systemctl enable owntone@zone` to get the service to start on reboot.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# OwnTone and ALSA
|
# OwnTone and ALSA
|
||||||
|
|
||||||
ALSA is one of the main output configuration options for local audio; when using ALSA you will typically let the system select the soundcard on your machine as the `default` device/sound card - a mixer associated with the ALSA device is used for volume control. However if your machine has multiple sound cards and your system chooses the wrong playback device, you will need to manually select the card and mixer to complete the OwnTone configuration.
|
ALSA is one of the main output configuration options for local audio; when using ALSA you will typically let the system select the sound card on your machine as the `default` device/sound card - a mixer associated with the ALSA device is used for volume control. However if your machine has multiple sound cards and your system chooses the wrong playback device, you will need to manually select the card and mixer to complete the OwnTone configuration.
|
||||||
|
|
||||||
## Quick introduction to ALSA devices
|
## Quick introduction to ALSA devices
|
||||||
|
|
||||||
@ -13,13 +13,14 @@ Alternative ALSA names can be used to refer to physical ALSA devices and can be
|
|||||||
* more descriptive rather than being a card number
|
* more descriptive rather than being a card number
|
||||||
* consistent for USB numeration - USB ALSA devices may not have the same card number across reboots/reconnects
|
* consistent for USB numeration - USB ALSA devices may not have the same card number across reboots/reconnects
|
||||||
|
|
||||||
The ALSA device information required for configuration the server can be deterined using `aplay`, as described in the rest of this document, but OwnTone can also assist; when configured to log at `INFO` level the following information is provided during startup:
|
The ALSA device information required for configuration the server can be determined using `aplay`, as described in the rest of this document, but OwnTone can also assist; when configured to log at `INFO` level the following information is provided during startup:
|
||||||
|
|
||||||
```
|
```
|
||||||
laudio: Available ALSA playback mixer(s) on hw:0 CARD=Intel (HDA Intel): 'Master' 'Headphone' 'Speaker' 'PCM' 'Mic' 'Beep'
|
laudio: Available ALSA playback mixer(s) on hw:0 CARD=Intel (HDA Intel): 'Master' 'Headphone' 'Speaker' 'PCM' 'Mic' 'Beep'
|
||||||
laudio: Available ALSA playback mixer(s) on hw:1 CARD=E30 (E30): 'E30 '
|
laudio: Available ALSA playback mixer(s) on hw:1 CARD=E30 (E30): 'E30 '
|
||||||
laudio: Available ALSA playback mixer(s) on hw:2 CARD=Seri (Plantronics Blackwire 3210 Seri): 'Sidetone' 'Headset'
|
laudio: Available ALSA playback mixer(s) on hw:2 CARD=Seri (Plantronics Blackwire 3210 Seri): 'Sidetone' 'Headset'
|
||||||
```
|
```
|
||||||
|
|
||||||
The `CARD=` string is the alternate ALSA name for the device and can be used in place of the traditional `hw:x` name.
|
The `CARD=` string is the alternate ALSA name for the device and can be used in place of the traditional `hw:x` name.
|
||||||
|
|
||||||
On this machine the server reports that it can see the onboard HDA Intel sound card and two additional sound cards: a Topping E30 DAC and a Plantronics Headset which are both USB devices. We can address the first ALSA device as `hw:0` or `hw:CARD=Intel` or `hw:Intel` or `plughw:Intel`, the second ALSA device as `hw:1` or `hw:E30` and so forth. The latter 2 devices being on USB will mean that `hw:1` may not always refer to `hw:E30` and thus in such a case using the alternate name is useful.
|
On this machine the server reports that it can see the onboard HDA Intel sound card and two additional sound cards: a Topping E30 DAC and a Plantronics Headset which are both USB devices. We can address the first ALSA device as `hw:0` or `hw:CARD=Intel` or `hw:Intel` or `plughw:Intel`, the second ALSA device as `hw:1` or `hw:E30` and so forth. The latter 2 devices being on USB will mean that `hw:1` may not always refer to `hw:E30` and thus in such a case using the alternate name is useful.
|
||||||
@ -29,7 +30,7 @@ On this machine the server reports that it can see the onboard HDA Intel sound c
|
|||||||
OwnTone can support a single ALSA device or multiple ALSA devices.
|
OwnTone can support a single ALSA device or multiple ALSA devices.
|
||||||
|
|
||||||
```
|
```
|
||||||
# example audio section for server for a single soundcard
|
# example audio section for server for a single sound card
|
||||||
audio {
|
audio {
|
||||||
nickname = "Computer"
|
nickname = "Computer"
|
||||||
type = "alsa"
|
type = "alsa"
|
||||||
@ -40,7 +41,7 @@ audio {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Multiple devices can be made available to OwnTone using seperate `alsa { .. }` sections.
|
Multiple devices can be made available to OwnTone using separate `alsa { .. }` sections.
|
||||||
|
|
||||||
```
|
```
|
||||||
audio {
|
audio {
|
||||||
@ -81,7 +82,7 @@ laudio: Available ALSA playback mixer(s) on hw:1 CARD=E30 (E30): 'E30 '
|
|||||||
laudio: Available ALSA playback mixer(s) on hw:2 CARD=Seri (Plantronics Blackwire 3210 Seri): 'Sidetone' 'Headset'
|
laudio: Available ALSA playback mixer(s) on hw:2 CARD=Seri (Plantronics Blackwire 3210 Seri): 'Sidetone' 'Headset'
|
||||||
```
|
```
|
||||||
|
|
||||||
Using the information above, we can see 3 soundcards that we could use with OwnTone with the first soundcard having a number of seperate mixer devices (volume control) for headphone and the interal speakers - we'll configure the server to use both these and also the E30 device. The server configuration for theese multiple outputs would be:
|
Using the information above, we can see 3 sound cards that we could use with OwnTone with the first sound card having a number of separate mixer devices (volume control) for headphone and the internal speakers - we'll configure the server to use both these and also the E30 device. The server configuration for these multiple outputs would be:
|
||||||
|
|
||||||
```
|
```
|
||||||
# using ALSA device alias where possible
|
# using ALSA device alias where possible
|
||||||
@ -111,9 +112,9 @@ NB: it is troublesome to use `hw` or `plughw` ALSA addressing when running OwnTo
|
|||||||
## Manually Determining the sound cards you have / ALSA can see
|
## Manually Determining the sound cards you have / ALSA can see
|
||||||
The example below is how I determined the correct sound card and mixer values for a Raspberry Pi that has an additional DAC card (hat) mounted. Of course using the log output from the server would have given the same results.
|
The example below is how I determined the correct sound card and mixer values for a Raspberry Pi that has an additional DAC card (hat) mounted. Of course using the log output from the server would have given the same results.
|
||||||
|
|
||||||
Use `aplay -l` to list all the sound cards and their order as known to the system - you can have multiple `card X, device Y` entries; some cards can also have multiple playback devices such as the RPI's onboard soundcard which feeds both headphone (card 0, device 0) and HDMI (card 0, device 1).
|
Use `aplay -l` to list all the sound cards and their order as known to the system - you can have multiple `card X, device Y` entries; some cards can also have multiple playback devices such as the RPI's onboard sound card which feeds both headphone (card 0, device 0) and HDMI (card 0, device 1).
|
||||||
|
|
||||||
```
|
```shell
|
||||||
$ aplay -l
|
$ aplay -l
|
||||||
**** List of PLAYBACK Hardware Devices ****
|
**** List of PLAYBACK Hardware Devices ****
|
||||||
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
|
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
|
||||||
@ -135,11 +136,11 @@ card 1: IQaudIODAC [IQaudIODAC], device 0: IQaudIO DAC HiFi pcm512x-hifi-0 []
|
|||||||
|
|
||||||
On this machine we see the second sound card installed, an IQaudIODAC dac hat, and identified as `card 1 device 0`. This is the playback device we want to be used by the server.
|
On this machine we see the second sound card installed, an IQaudIODAC dac hat, and identified as `card 1 device 0`. This is the playback device we want to be used by the server.
|
||||||
|
|
||||||
`hw:1,0` is the IQaudIODAC that we want to use - we verify audiable playback through that sound card using `aplay -Dhw:1 /tmp/sine441.wav`. If the card has only one device, we can simply refer to the sound card using `hw:X` so in this case where the IQaudIODAC only has one device, we can refer to this card as `hw:1` or `hw:1,0`.
|
`hw:1,0` is the IQaudIODAC that we want to use - we verify audible playback through that sound card using `aplay -Dhw:1 /tmp/sine441.wav`. If the card has only one device, we can simply refer to the sound card using `hw:X` so in this case where the IQaudIODAC only has one device, we can refer to this card as `hw:1` or `hw:1,0`.
|
||||||
|
|
||||||
Use `aplay -L` to get more information about the PCM devices defined on the system.
|
Use `aplay -L` to get more information about the PCM devices defined on the system.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
$ aplay -L
|
$ aplay -L
|
||||||
null
|
null
|
||||||
Discard all samples (playback) or generate zero samples (capture)
|
Discard all samples (playback) or generate zero samples (capture)
|
||||||
@ -209,7 +210,7 @@ audio {
|
|||||||
|
|
||||||
Once you have the card number (determined from `aplay -l`) we can inspect/confirm the name of the mixer that can be used for playback (it may NOT be `PCM` as expected by the server). In this example, the card `1` is of interest and thus we use `-c 1` with the following command:
|
Once you have the card number (determined from `aplay -l`) we can inspect/confirm the name of the mixer that can be used for playback (it may NOT be `PCM` as expected by the server). In this example, the card `1` is of interest and thus we use `-c 1` with the following command:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
$ amixer -c 1
|
$ amixer -c 1
|
||||||
Simple mixer control 'DSP Program',0
|
Simple mixer control 'DSP Program',0
|
||||||
Capabilities: enum
|
Capabilities: enum
|
||||||
@ -253,11 +254,11 @@ This is the name of the underlying physical device used for the mixer - it is ty
|
|||||||
|
|
||||||
## Handling Devices that cannot concurrently play multiple audio streams
|
## Handling Devices that cannot concurrently play multiple audio streams
|
||||||
|
|
||||||
Some devices such as various RPI DAC boards (IQaudio DAC, Allo Boss DAC...) cannot have multiple streams openned at the same time/cannot play multiple sound files at the same time. This results in `Device or resource busy` errors. You can confirm if your sound card has this problem by using the example below once have determined the names/cards information as above.
|
Some devices such as various RPI DAC boards (IQaudio DAC, Allo Boss DAC...) cannot have multiple streams opened at the same time/cannot play multiple sound files at the same time. This results in `Device or resource busy` errors. You can confirm if your sound card has this problem by using the example below once have determined the names/cards information as above.
|
||||||
|
|
||||||
Using our `hw:1` device we try:
|
Using our `hw:1` device we try:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
# generate some audio
|
# generate some audio
|
||||||
$ sox -n -c 2 -r 44100 -b 16 -C 128 /tmp/sine441.wav synth 30 sin 500-100 fade h 0.2 30 0.2
|
$ sox -n -c 2 -r 44100 -b 16 -C 128 /tmp/sine441.wav synth 30 sin 500-100 fade h 0.2 30 0.2
|
||||||
|
|
||||||
@ -295,11 +296,11 @@ aplay: main:788: audio open error: Device or resource busy
|
|||||||
|
|
||||||
In this instance this device cannot open multiple streams - OwnTone can handle this situation transparently with some audio being truncated from the end of the current file as the server prepares to play the following track. If this handling is causing you problems you may wish to use [ALSA's `dmix` functionally](https://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing) which provides a software mixing module. We will need to define a `dmix` component and configure the server to use that as it's sound card.
|
In this instance this device cannot open multiple streams - OwnTone can handle this situation transparently with some audio being truncated from the end of the current file as the server prepares to play the following track. If this handling is causing you problems you may wish to use [ALSA's `dmix` functionally](https://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing) which provides a software mixing module. We will need to define a `dmix` component and configure the server to use that as it's sound card.
|
||||||
|
|
||||||
The downside to the `dmix` approach will be the need to fix a samplerate (48000 being the default) for this software mixing module meaning any files that have a mismatched samplerate will be resampled.
|
The downside to the `dmix` approach will be the need to fix a sample rate (48000 being the default) for this software mixing module meaning any files that have a mismatched sample rate will be resampled.
|
||||||
|
|
||||||
## ALSA dmix configuration/setup
|
## ALSA dmix configuration/setup
|
||||||
|
|
||||||
A `dmix` device can be defined in `/etc/asound.conf` or `~/.asoundrc` for the same user running OwnTone. We will need to know the underlying physical soundcard to be used: in our examples above, `hw:1,0` / `card 1, device 0` representing our IQaudIODAC as per output of `aplay -l`. We also take the `buffer_size` and `period_size` from the output of playing a sound file via `aplay -v`.
|
A `dmix` device can be defined in `/etc/asound.conf` or `~/.asoundrc` for the same user running OwnTone. We will need to know the underlying physical sound card to be used: in our examples above, `hw:1,0` / `card 1, device 0` representing our IQaudIODAC as per output of `aplay -l`. We also take the `buffer_size` and `period_size` from the output of playing a sound file via `aplay -v`.
|
||||||
|
|
||||||
```
|
```
|
||||||
# use 'dac' as the name of the device: "aplay -Ddac ...."
|
# use 'dac' as the name of the device: "aplay -Ddac ...."
|
||||||
@ -335,7 +336,7 @@ ctl.dmixer {
|
|||||||
|
|
||||||
Running `aplay -L` we will see our newly defined devices `dac` and `dmixer`
|
Running `aplay -L` we will see our newly defined devices `dac` and `dmixer`
|
||||||
|
|
||||||
```
|
```shell
|
||||||
$ aplay -L
|
$ aplay -L
|
||||||
null
|
null
|
||||||
Discard all samples (playback) or generate zero samples (capture)
|
Discard all samples (playback) or generate zero samples (capture)
|
||||||
|
@ -1,19 +1,18 @@
|
|||||||
# OwnTone and Pulseaudio
|
# PulseAudio
|
||||||
|
|
||||||
You have the choice of running Pulseaudio either in system mode or user mode.
|
You have the choice of running PulseAudio either in system mode or user mode.
|
||||||
For headless servers, i.e. systems without desktop users, system mode is
|
For headless servers, i.e. systems without desktop users, system mode is
|
||||||
recommended.
|
recommended.
|
||||||
|
|
||||||
If there is a desktop user logged in most of the time, a setup with network
|
If there is a desktop user logged in most of the time, a setup with network
|
||||||
access via localhost only for daemons is a more appropriate solution, since the
|
access via localhost only for daemons is a more appropriate solution, since the
|
||||||
normal user administration (with, e.g., `pulseaudio -k`) works as advertised.
|
normal user administration (with, e.g., `pulseaudio -k`) works as advertised.
|
||||||
Also, the user specific configuration for pulseaudio is preserved across
|
Also, the user specific configuration for PulseAudio is preserved across
|
||||||
sessions as expected.
|
sessions as expected.
|
||||||
|
|
||||||
- [System mode](#system-mode-with-bluetooth-support)
|
- [System mode](#system-mode-with-bluetooth-support)
|
||||||
- [User mode](#user-mode-with-network-access)
|
- [User mode](#user-mode-with-network-access)
|
||||||
|
|
||||||
|
|
||||||
## System Mode with Bluetooth support
|
## System Mode with Bluetooth support
|
||||||
|
|
||||||
Credit: [Rob Pope](http://robpope.co.uk/blog/post/setting-up-forked-daapd-with-bluetooth)
|
Credit: [Rob Pope](http://robpope.co.uk/blog/post/setting-up-forked-daapd-with-bluetooth)
|
||||||
@ -21,22 +20,21 @@ Credit: [Rob Pope](http://robpope.co.uk/blog/post/setting-up-forked-daapd-with-b
|
|||||||
This guide was written based on headless Debian Jessie platforms. Most of the
|
This guide was written based on headless Debian Jessie platforms. Most of the
|
||||||
instructions will require that you are root.
|
instructions will require that you are root.
|
||||||
|
|
||||||
|
### Step 1: Setting up PulseAudio
|
||||||
### Step 1: Setting up Pulseaudio
|
|
||||||
|
|
||||||
If you see a "Connection refused" error when starting the server, then you
|
If you see a "Connection refused" error when starting the server, then you
|
||||||
will probably need to setup Pulseaudio to run in system mode [1]. This means
|
will probably need to setup PulseAudio to run in system mode [1]. This means
|
||||||
that the Pulseaudio daemon will be started during boot and be available to all
|
that the PulseAudio daemon will be started during boot and be available to all
|
||||||
users.
|
users.
|
||||||
|
|
||||||
How to start Pulseaudio depends on your distribution, but in many cases you will
|
How to start PulseAudio depends on your distribution, but in many cases you will
|
||||||
need to add a pulseaudio.service file to /etc/systemd/system with the following
|
need to add a `pulseaudio.service` file to `/etc/systemd/system` with the
|
||||||
content:
|
following content:
|
||||||
|
|
||||||
```
|
```
|
||||||
# systemd service file for Pulseaudio running in system mode
|
# systemd service file for PulseAudio running in system mode
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Pulseaudio sound server
|
Description=PulseAudio sound server
|
||||||
Before=sound.target
|
Before=sound.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
@ -46,7 +44,7 @@ ExecStart=/usr/bin/pulseaudio --system --disallow-exit
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want Bluetooth support, you must also configure Pulseaudio to load the
|
If you want Bluetooth support, you must also configure PulseAudio to load the
|
||||||
Bluetooth module. First install it (Debian:
|
Bluetooth module. First install it (Debian:
|
||||||
`apt install pulseaudio-module-bluetooth`) and then add the following to
|
`apt install pulseaudio-module-bluetooth`) and then add the following to
|
||||||
/etc/pulse/system.pa:
|
/etc/pulse/system.pa:
|
||||||
@ -58,32 +56,30 @@ load-module module-bluetooth-discover
|
|||||||
.endif
|
.endif
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you need to make sure that Pulseaudio can communicate with the Bluetooth
|
Now you need to make sure that PulseAudio can communicate with the Bluetooth
|
||||||
daemon through D-Bus. On Raspbian this is already enabled, and you can skip this
|
daemon through D-Bus. On Raspbian this is already enabled, and you can skip this
|
||||||
step. Otherwise do one of the following:
|
step. Otherwise do one of the following:
|
||||||
|
|
||||||
1. Add the pulse user to the bluetooth group: `adduser pulse bluetooth`
|
1. Add the pulse user to the bluetooth group: `adduser pulse bluetooth`
|
||||||
2. Edit /etc/dbus-1/system.d/bluetooth.conf and change the policy for `<policy context="default"\>` to "allow"
|
2. Edit /etc/dbus-1/system.d/bluetooth.conf and change the policy for `<policy context="default"\>` to "allow"
|
||||||
|
|
||||||
Phew, almost done with Pulseaudio! Now you should:
|
Phew, almost done with PulseAudio! Now you should:
|
||||||
|
|
||||||
1. enable system mode on boot with `systemctl enable pulseaudio`
|
1. enable system mode on boot with `systemctl enable pulseaudio`
|
||||||
2. reboot (or at least restart dbus and pulseaudio)
|
2. reboot (or at least restart dbus and pulseaudio)
|
||||||
3. check that the Bluetooth module is loaded with `pactl list modules short`
|
3. check that the Bluetooth module is loaded with `pactl list modules short`
|
||||||
|
|
||||||
|
|
||||||
### Step 2: Setting up the server
|
### Step 2: Setting up the server
|
||||||
|
|
||||||
Add the user the server is running as (typically "owntone") to the
|
Add the user the server is running as (typically "owntone") to the
|
||||||
"pulse-access" group:
|
"pulse-access" group:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
adduser owntone pulse-access
|
adduser owntone pulse-access
|
||||||
```
|
```
|
||||||
|
|
||||||
Now (re)start the server.
|
Now (re)start the server.
|
||||||
|
|
||||||
|
|
||||||
### Step 3: Adding a Bluetooth device
|
### Step 3: Adding a Bluetooth device
|
||||||
|
|
||||||
To connect with the device, run `bluetoothctl` and then:
|
To connect with the device, run `bluetoothctl` and then:
|
||||||
@ -99,42 +95,36 @@ trust [MAC address]
|
|||||||
connect [MAC address]
|
connect [MAC address]
|
||||||
```
|
```
|
||||||
|
|
||||||
Now the speaker should appear. You can also verify that Pulseaudio has detected
|
Now the speaker should appear. You can also verify that PulseAudio has detected
|
||||||
the speaker with `pactl list sinks short`.
|
the speaker with `pactl list sinks short`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## User Mode with Network Access
|
## User Mode with Network Access
|
||||||
|
|
||||||
Credit: wolfmanx and [this blog](http://billauer.co.il/blog/2014/01/pa-multiple-users/)
|
Credit: wolfmanx and [this blog](http://billauer.co.il/blog/2014/01/pa-multiple-users/)
|
||||||
|
|
||||||
|
|
||||||
### Step 1: Copy system pulseaudio configuration to the users home directory
|
### Step 1: Copy system pulseaudio configuration to the users home directory
|
||||||
|
|
||||||
```
|
```shell
|
||||||
mkdir -p ~/.pulse
|
mkdir -p ~/.pulse
|
||||||
cp /etc/pulse/default.pa ~/.pulse/
|
cp /etc/pulse/default.pa ~/.pulse/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Step 2: Enable TCP access from localhost only
|
### Step 2: Enable TCP access from localhost only
|
||||||
|
|
||||||
Edit the file `~/.pulse/default.pa` , adding the following line at the end:
|
Edit the file `~/.pulse/default.pa` , adding the following line at the end:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
|
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Step 3: Restart the pulseaudio deamon
|
### Step 3: Restart the pulseaudio deamon
|
||||||
|
|
||||||
```
|
```shell
|
||||||
pulseaudio -k
|
pulseaudio -k
|
||||||
# OR
|
# OR
|
||||||
pulseaudio -D
|
pulseaudio -D
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Step 4: Adjust configuration file
|
### Step 4: Adjust configuration file
|
||||||
|
|
||||||
In the `audio` section of `/etc/owntone.conf`, set `server` to `localhost`:
|
In the `audio` section of `/etc/owntone.conf`, set `server` to `localhost`:
|
||||||
@ -145,5 +135,5 @@ server = "localhost"
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
[1] Note that Pulseaudio will warn against system mode. However, in this use
|
[1] Note that PulseAudio will warn against system mode. However, in this use
|
||||||
case it is actually the solution recommended by the [Pulseaudio folks themselves](https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-August/026823.html).
|
case it is actually the solution recommended by the [PulseAudio folks themselves](https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-August/026823.html).
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# OwnTone and Radio Stream tweaking
|
# Radio Stream Tweaking
|
||||||
|
|
||||||
Radio streams have many different ways in how metadata is sent. Many should
|
Radio streams have many different ways in how metadata is sent. Many should
|
||||||
just work as expected, but a few may require some tweaking. If you are not
|
just work as expected, but a few may require some tweaking. If you are not
|
||||||
@ -6,7 +6,7 @@ seeing expected title, track, artist, artwork in clients or web UI, the
|
|||||||
following may help.
|
following may help.
|
||||||
|
|
||||||
First, understand what and how the particular stream is sending information.
|
First, understand what and how the particular stream is sending information.
|
||||||
ffprobe is a command that can be used to interegrate most of the stream
|
`ffprobe` is a command that can be used to integrate most of the stream
|
||||||
information. `ffprobe <http://stream.url>` should give you some useful output,
|
information. `ffprobe <http://stream.url>` should give you some useful output,
|
||||||
look at the Metadata section, below is an example.
|
look at the Metadata section, below is an example.
|
||||||
|
|
||||||
@ -26,7 +26,6 @@ In the example above, all tags are populated with correct information, no
|
|||||||
modifications to the server configuration should be needed. Note that
|
modifications to the server configuration should be needed. Note that
|
||||||
StreamUrl points to the artwork image file.
|
StreamUrl points to the artwork image file.
|
||||||
|
|
||||||
|
|
||||||
Below is another example that will require some tweaks to the server, Notice
|
Below is another example that will require some tweaks to the server, Notice
|
||||||
`icy-name` is blank and `StreamUrl` doesn't point to an image.
|
`icy-name` is blank and `StreamUrl` doesn't point to an image.
|
||||||
|
|
||||||
@ -67,7 +66,7 @@ duration.
|
|||||||
Try to download the file, e.g. with `curl "https://radio.stream.domain/api9/eventdata/49790578"`.
|
Try to download the file, e.g. with `curl "https://radio.stream.domain/api9/eventdata/49790578"`.
|
||||||
Let's assume you get something like this:
|
Let's assume you get something like this:
|
||||||
|
|
||||||
```
|
```json
|
||||||
{
|
{
|
||||||
"eventId": 49793707,
|
"eventId": 49793707,
|
||||||
"eventStart": "2020-05-08 16:23:03",
|
"eventStart": "2020-05-08 16:23:03",
|
||||||
@ -85,7 +84,7 @@ Let's assume you get something like this:
|
|||||||
In this case, you would need to tell the server to look for "eventDuration"
|
In this case, you would need to tell the server to look for "eventDuration"
|
||||||
and "eventImageUrl" (or just "duration" and "url"). You can do that like this:
|
and "eventImageUrl" (or just "duration" and "url"). You can do that like this:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
curl -X PUT "http://localhost:3689/api/settings/misc/streamurl_keywords_length" --data "{\"name\":\"streamurl_keywords_length\",\"value\":\"duration\"}"
|
curl -X PUT "http://localhost:3689/api/settings/misc/streamurl_keywords_length" --data "{\"name\":\"streamurl_keywords_length\",\"value\":\"duration\"}"
|
||||||
curl -X PUT "http://localhost:3689/api/settings/misc/streamurl_keywords_artwork_url" --data "{\"name\":\"streamurl_keywords_artwork_url\",\"value\":\"url\"}
|
curl -X PUT "http://localhost:3689/api/settings/misc/streamurl_keywords_artwork_url" --data "{\"name\":\"streamurl_keywords_artwork_url\",\"value\":\"url\"}
|
||||||
```
|
```
|
||||||
|
@ -4,10 +4,10 @@ It is possible to access a shared library over the internet from a DAAP client
|
|||||||
like iTunes. You must have remote access to the host machine.
|
like iTunes. You must have remote access to the host machine.
|
||||||
|
|
||||||
First log in to the host and forward port 3689 to your local machine. You now
|
First log in to the host and forward port 3689 to your local machine. You now
|
||||||
need to broadcast the daap service to iTunes on your local machine. On macOS the
|
need to broadcast the DAAP service to iTunes on your local machine. On macOS the
|
||||||
command is:
|
command is:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
dns-sd -P iTunesServer _daap._tcp local 3689 localhost.local 127.0.0.1 "ffid=12345"
|
dns-sd -P iTunesServer _daap._tcp local 3689 localhost.local 127.0.0.1 "ffid=12345"
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ for details.
|
|||||||
|
|
||||||
## Accessing from Internet for authenticated users
|
## Accessing from Internet for authenticated users
|
||||||
|
|
||||||
If you intend to access Owntone directly from Internet, it's a good idea to
|
If you intend to access OwnTone directly from Internet, it is recommended to
|
||||||
protect it against unauthenticated users.
|
protect it against unauthenticated users.
|
||||||
|
|
||||||
[This guide](https://blog.cyril.by/en/software/example-sso-with-authelia-and-owntone)
|
[This guide](https://blog.cyril.by/en/software/example-sso-with-authelia-and-owntone)
|
||||||
|
@ -29,7 +29,7 @@ argument when you run ./configure:
|
|||||||
Feature | Configure argument | Packages
|
Feature | Configure argument | Packages
|
||||||
---------------------|--------------------------|-------------------------------------
|
---------------------|--------------------------|-------------------------------------
|
||||||
Chromecast | `--enable-chromecast` | libgnutls*-dev
|
Chromecast | `--enable-chromecast` | libgnutls*-dev
|
||||||
Pulseaudio | `--with-pulseaudio` | libpulse-dev
|
PulseAudio | `--with-pulseaudio` | libpulse-dev
|
||||||
|
|
||||||
These features can be disabled saving you package dependencies:
|
These features can be disabled saving you package dependencies:
|
||||||
|
|
||||||
@ -158,7 +158,7 @@ Optional features require the following additional ports:
|
|||||||
Feature | Configure argument | Ports
|
Feature | Configure argument | Ports
|
||||||
--------------------|--------------------------|-------------------
|
--------------------|--------------------------|-------------------
|
||||||
Chromecast | `--enable-chromecast` | gnutls
|
Chromecast | `--enable-chromecast` | gnutls
|
||||||
Pulseaudio | `--with-pulseaudio` | pulseaudio
|
PulseAudio | `--with-pulseaudio` | pulseaudio
|
||||||
|
|
||||||
Clone the OwnTone repo:
|
Clone the OwnTone repo:
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ station:
|
|||||||
observe that you must use a session-id < 100, and that you must login and
|
observe that you must use a session-id < 100, and that you must login and
|
||||||
logout):
|
logout):
|
||||||
|
|
||||||
```
|
```shell
|
||||||
curl "http://localhost:3689/login?pairing-guid=0x1&request-session-id=50"
|
curl "http://localhost:3689/login?pairing-guid=0x1&request-session-id=50"
|
||||||
curl "http://localhost:3689/ctrl-int/1/playspec?database-spec='dmap.persistentid:0x1'&container-spec='dmap.persistentid:0x[PLAYLIST-ID]'&container-item-spec='dmap.containeritemid:0x[FILE ID]'&session-id=50"
|
curl "http://localhost:3689/ctrl-int/1/playspec?database-spec='dmap.persistentid:0x1'&container-spec='dmap.persistentid:0x[PLAYLIST-ID]'&container-item-spec='dmap.containeritemid:0x[FILE ID]'&session-id=50"
|
||||||
curl "http://localhost:3689/logout?session-id=50"
|
curl "http://localhost:3689/logout?session-id=50"
|
||||||
|
@ -5,16 +5,14 @@ You can - to some extent - use clients for MPD to control OwnTone.
|
|||||||
By default OwnTone listens on port 6600 for MPD clients. You can change
|
By default OwnTone listens on port 6600 for MPD clients. You can change
|
||||||
this in the configuration file.
|
this in the configuration file.
|
||||||
|
|
||||||
Currently only a subset of the commands offered by MPD (see [MPD protocol documentation](http://www.musicpd.org/doc/protocol/))
|
Currently only a subset of the commands offered by MPD (see [MPD protocol documentation](http://www.musicpd.org/doc/protocol/)) are supported.
|
||||||
are supported.
|
|
||||||
|
|
||||||
Due to some differences between OwnTone and MPD not all commands will act the
|
Due to some differences between OwnTone and MPD not all commands will act the
|
||||||
same way they would running MPD:
|
same way they would running MPD:
|
||||||
|
|
||||||
- crossfade, mixrampdb, mixrampdelay and replaygain will have no effect
|
- crossfade, mixrampdb, mixrampdelay and replaygain will have no effect
|
||||||
- single, repeat: unlike MPD, OwnTone does not support setting single and repeat separately
|
- single, repeat: unlike MPD, OwnTone does not support setting single and repeat separately
|
||||||
on/off, instead repeat off, repeat all and repeat single are supported. Thus setting single on
|
on/off, instead repeat off, repeat all and repeat single are supported. Thus setting single on will result in repeat single, repeat on results in repeat all.
|
||||||
will result in repeat single, repeat on results in repeat all.
|
|
||||||
|
|
||||||
The following table shows what is working for a selection of MPD clients:
|
The following table shows what is working for a selection of MPD clients:
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Remote gets a list of output devices from the server; this list includes any
|
Remote gets a list of output devices from the server; this list includes any
|
||||||
and all devices on the network we know of that advertise AirPlay: AirPort
|
and all devices on the network we know of that advertise AirPlay: AirPort
|
||||||
Express, Apple TV, ... It also includes the local audio output, that is, the
|
Express, Apple TV, ... It also includes the local audio output, that is, the
|
||||||
sound card on the server (even if there is no soundcard).
|
sound card on the server (even if there is no sound card).
|
||||||
|
|
||||||
OwnTone remembers your selection and the individual volume for each
|
OwnTone remembers your selection and the individual volume for each
|
||||||
output device; selected devices will be automatically re-selected, except if
|
output device; selected devices will be automatically re-selected, except if
|
||||||
@ -39,7 +39,7 @@ some common reasons:
|
|||||||
Remote device and the host OwnTone is running on.
|
Remote device and the host OwnTone is running on.
|
||||||
|
|
||||||
Solution 1: Sometimes it resolves the issue if you force Remote to quit, restart
|
Solution 1: Sometimes it resolves the issue if you force Remote to quit, restart
|
||||||
it and do the pairing proces again. Another trick is to establish some other
|
it and do the pairing process again. Another trick is to establish some other
|
||||||
connection (eg SSH) from the iPod/iPhone/iPad to the host.
|
connection (eg SSH) from the iPod/iPhone/iPad to the host.
|
||||||
|
|
||||||
Solution 2: Check your router settings if you can whitelist multicast addresses
|
Solution 2: Check your router settings if you can whitelist multicast addresses
|
||||||
|
@ -40,4 +40,3 @@ probably obsolete when you read it :-)
|
|||||||
| Remote for Windows Phone | Komodex | Remote | Windows Phone | Yes (2.2.1.0) |
|
| Remote for Windows Phone | Komodex | Remote | Windows Phone | Yes (2.2.1.0) |
|
||||||
| TunesRemote SE | | Remote | Java | Yes (r108) |
|
| TunesRemote SE | | Remote | Java | Yes (r108) |
|
||||||
| rtRemote for Windows | bizmodeller | Remote | Windows | Yes (1.2.0.67) |
|
| rtRemote for Windows | bizmodeller | Remote | Windows | Yes (1.2.0.67) |
|
||||||
|
|
||||||
|
@ -638,7 +638,7 @@ POST /api/queue/items/add
|
|||||||
|
|
||||||
| Parameter | Value |
|
| Parameter | Value |
|
||||||
| --------------- | ----------------------------------------------------------- |
|
| --------------- | ----------------------------------------------------------- |
|
||||||
| uris | Comma seperated list of resource identifiers (`track`, `playlist`, `artist` or `album` object `uri`) |
|
| uris | Comma separated list of resource identifiers (`track`, `playlist`, `artist` or `album` object `uri`) |
|
||||||
| expression | A smart playlist query expression identifying the tracks that will be added to the queue. |
|
| expression | A smart playlist query expression identifying the tracks that will be added to the queue. |
|
||||||
| position | *(Optional)* If a position is given, new items are inserted starting from this position into the queue. |
|
| position | *(Optional)* If a position is given, new items are inserted starting from this position into the queue. |
|
||||||
| playback | *(Optional)* If the `playback` parameter is set to `start`, playback will be started after adding the new items. |
|
| playback | *(Optional)* If the `playback` parameter is set to `start`, playback will be started after adding the new items. |
|
||||||
|
@ -4,22 +4,21 @@
|
|||||||
|
|
||||||
In the config file, you can select ALSA for local audio. This is the default.
|
In the config file, you can select ALSA for local audio. This is the default.
|
||||||
|
|
||||||
When using ALSA, the server will try to syncronize playback with AirPlay. You
|
When using ALSA, the server will try to synchronize playback with AirPlay. You
|
||||||
can adjust the syncronization in the config file.
|
can adjust the synchronization in the config file.
|
||||||
|
|
||||||
For most setups the default values in the config file should work. If they
|
For most setups the default values in the config file should work. If they
|
||||||
don't, there is help [here](../advanced/outputs-alsa.md)
|
don't, there is help [here](../advanced/outputs-alsa.md)
|
||||||
|
|
||||||
|
## Local audio, Bluetooth and more through PulseAudio
|
||||||
|
|
||||||
## Local audio, Bluetooth and more through Pulseaudio
|
In the config file, you can select PulseAudio for local audio. In addition to
|
||||||
|
local audio, PulseAudio also supports an array of other targets, e.g. Bluetooth
|
||||||
|
or DLNA. However, PulseAudio does require some setup, so here is a separate page
|
||||||
|
with some help on that: [PulseAudio](../advanced/outputs-pulse.md)
|
||||||
|
|
||||||
In the config file, you can select Pulseaudio for local audio. In addition to
|
Note that if you select PulseAudio the "card" setting in the config file has
|
||||||
local audio, Pulseaudio also supports an array of other targets, e.g. Bluetooth
|
no effect. Instead all sound cards detected by PulseAudio will be listed as
|
||||||
or DLNA. However, Pulseaudio does require some setup, so here is a separate page
|
|
||||||
with some help on that: [Pulse audio](../advanced/outputs-pulse.md)
|
|
||||||
|
|
||||||
Note that if you select Pulseaudio the "card" setting in the config file has
|
|
||||||
no effect. Instead all soundcards detected by Pulseaudio will be listed as
|
|
||||||
speakers by OwnTone.
|
speakers by OwnTone.
|
||||||
|
|
||||||
You can adjust the latency of Pulseaudio playback in the config file.
|
You can adjust the latency of PulseAudio playback in the config file.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user