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
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
a `zone` by `sudo systemctl start owntone@zone` and check that it is
|
||||
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.
|
||||
|
@ -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
|
||||
* 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:1 CARD=E30 (E30): 'E30 '
|
||||
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.
|
||||
|
||||
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.
|
||||
@ -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 {
|
||||
@ -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'
|
||||
```
|
||||
|
||||
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
|
||||
@ -113,7 +114,7 @@ The example below is how I determined the correct sound card and mixer values fo
|
||||
|
||||
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
|
||||
**** List of PLAYBACK Hardware Devices ****
|
||||
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.
|
||||
|
||||
`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.
|
||||
|
||||
```
|
||||
```shell
|
||||
$ aplay -L
|
||||
null
|
||||
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:
|
||||
|
||||
```
|
||||
```shell
|
||||
$ amixer -c 1
|
||||
Simple mixer control 'DSP Program',0
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
```shell
|
||||
# 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
|
||||
|
||||
@ -335,7 +336,7 @@ ctl.dmixer {
|
||||
|
||||
Running `aplay -L` we will see our newly defined devices `dac` and `dmixer`
|
||||
|
||||
```
|
||||
```shell
|
||||
$ aplay -L
|
||||
null
|
||||
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
|
||||
recommended.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
- [System mode](#system-mode-with-bluetooth-support)
|
||||
- [User mode](#user-mode-with-network-access)
|
||||
|
||||
|
||||
## System Mode with Bluetooth support
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
users.
|
||||
|
||||
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
|
||||
content:
|
||||
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 content:
|
||||
|
||||
```
|
||||
# systemd service file for Pulseaudio running in system mode
|
||||
# systemd service file for PulseAudio running in system mode
|
||||
[Unit]
|
||||
Description=Pulseaudio sound server
|
||||
Description=PulseAudio sound server
|
||||
Before=sound.target
|
||||
|
||||
[Service]
|
||||
@ -46,7 +44,7 @@ ExecStart=/usr/bin/pulseaudio --system --disallow-exit
|
||||
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:
|
||||
`apt install pulseaudio-module-bluetooth`) and then add the following to
|
||||
/etc/pulse/system.pa:
|
||||
@ -58,32 +56,30 @@ load-module module-bluetooth-discover
|
||||
.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
|
||||
step. Otherwise do one of the following:
|
||||
|
||||
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"
|
||||
|
||||
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`
|
||||
2. reboot (or at least restart dbus and pulseaudio)
|
||||
3. check that the Bluetooth module is loaded with `pactl list modules short`
|
||||
|
||||
|
||||
### Step 2: Setting up the server
|
||||
|
||||
Add the user the server is running as (typically "owntone") to the
|
||||
"pulse-access" group:
|
||||
|
||||
```
|
||||
```shell
|
||||
adduser owntone pulse-access
|
||||
```
|
||||
|
||||
Now (re)start the server.
|
||||
|
||||
|
||||
### Step 3: Adding a Bluetooth device
|
||||
|
||||
To connect with the device, run `bluetoothctl` and then:
|
||||
@ -99,42 +95,36 @@ trust [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`.
|
||||
|
||||
|
||||
|
||||
## User Mode with Network Access
|
||||
|
||||
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
|
||||
|
||||
```
|
||||
```shell
|
||||
mkdir -p ~/.pulse
|
||||
cp /etc/pulse/default.pa ~/.pulse/
|
||||
```
|
||||
|
||||
|
||||
### Step 2: Enable TCP access from localhost only
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
|
||||
### Step 3: Restart the pulseaudio deamon
|
||||
|
||||
```
|
||||
```shell
|
||||
pulseaudio -k
|
||||
# OR
|
||||
pulseaudio -D
|
||||
```
|
||||
|
||||
|
||||
### Step 4: Adjust configuration file
|
||||
|
||||
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
|
||||
case it is actually the solution recommended by the [Pulseaudio folks themselves](https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-August/026823.html).
|
||||
[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).
|
||||
|
@ -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
|
||||
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.
|
||||
|
||||
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,
|
||||
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
|
||||
StreamUrl points to the artwork image file.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
@ -67,7 +66,7 @@ duration.
|
||||
Try to download the file, e.g. with `curl "https://radio.stream.domain/api9/eventdata/49790578"`.
|
||||
Let's assume you get something like this:
|
||||
|
||||
```
|
||||
```json
|
||||
{
|
||||
"eventId": 49793707,
|
||||
"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"
|
||||
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_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.
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
```shell
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
[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
|
||||
---------------------|--------------------------|-------------------------------------
|
||||
Chromecast | `--enable-chromecast` | libgnutls*-dev
|
||||
Pulseaudio | `--with-pulseaudio` | libpulse-dev
|
||||
PulseAudio | `--with-pulseaudio` | libpulse-dev
|
||||
|
||||
These features can be disabled saving you package dependencies:
|
||||
|
||||
@ -158,7 +158,7 @@ Optional features require the following additional ports:
|
||||
Feature | Configure argument | Ports
|
||||
--------------------|--------------------------|-------------------
|
||||
Chromecast | `--enable-chromecast` | gnutls
|
||||
Pulseaudio | `--with-pulseaudio` | pulseaudio
|
||||
PulseAudio | `--with-pulseaudio` | pulseaudio
|
||||
|
||||
Clone the OwnTone repo:
|
||||
|
||||
|
@ -18,7 +18,7 @@ station:
|
||||
observe that you must use a session-id < 100, and that you must login and
|
||||
logout):
|
||||
|
||||
```
|
||||
```shell
|
||||
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/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
|
||||
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/))
|
||||
are supported.
|
||||
Currently only a subset of the commands offered by MPD (see [MPD protocol documentation](http://www.musicpd.org/doc/protocol/)) are supported.
|
||||
|
||||
Due to some differences between OwnTone and MPD not all commands will act the
|
||||
same way they would running MPD:
|
||||
|
||||
- crossfade, mixrampdb, mixrampdelay and replaygain will have no effect
|
||||
- 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
|
||||
will result in repeat single, repeat on results in repeat all.
|
||||
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.
|
||||
|
||||
The following table shows what is working for a selection of MPD clients:
|
||||
|
||||
|
@ -39,7 +39,7 @@ some common reasons:
|
||||
Remote device and the host OwnTone is running on.
|
||||
|
||||
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.
|
||||
|
||||
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) |
|
||||
| TunesRemote SE | | Remote | Java | Yes (r108) |
|
||||
| rtRemote for Windows | bizmodeller | Remote | Windows | Yes (1.2.0.67) |
|
||||
|
||||
|
@ -638,7 +638,7 @@ POST /api/queue/items/add
|
||||
|
||||
| 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. |
|
||||
| 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. |
|
||||
|
@ -4,22 +4,21 @@
|
||||
|
||||
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
|
||||
can adjust the syncronization in the config file.
|
||||
When using ALSA, the server will try to synchronize playback with AirPlay. You
|
||||
can adjust the synchronization in the config file.
|
||||
|
||||
For most setups the default values in the config file should work. If they
|
||||
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
|
||||
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: [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
|
||||
Note that if you select PulseAudio the "card" setting in the config file has
|
||||
no effect. Instead all sound cards detected by PulseAudio will be listed as
|
||||
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