Настройка звука в XRDP для Linux Ubuntu

Замена Windows Server на Linux Ubuntu – выгодное и полезное решение. Такое решение может получиться более стабильно работающим и, главное, масштабируемым и более защищенным. Но есть в решениях Linux всегда ложка дегтя. Прежде всего, это работа с аппаратурой. Ряд аппаратных средств работает только с Windows. И даже гордятся этим, выставляя на своем корпусе лейбочку мелко-софтовской компании…
Так же возникает вопрос настройки звука для XRDP в Linux Ubuntu. По умолчанию, звук в XRDP отключен, и чтобы его настроить, нужно провести ряд действий. Данная статья рассказывает, как это сделать.

 

Итак, устанавливаем необходимые нам пакеты:

sudo apt-get build-dep xserver-xorg-core 

apt-get install autoconf libtool pkg-config

apt-get install libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 xutils libpulse-dev

 

Устанавливаем Git, чтоб иметь возможность брать исходные коды прямо из репозитариев:

apt-get install git

Клонируем проект XRDP в текущую папку:
git clone git://github.com/FreeRDP/xrdp.git

Можно также просто закачать zip-архив по адресу: https://github.com/FreeRDP/xrdp

Компилируем XRDP:


./bootstrap

./configure --enable-jpeg --enable-simplesound

С некоторых пор разработчик убрал опцию —enable-simplesound, поэтому, не пугайтесь, если у вас выдастся сообщение об отсутствующей опции. Сейчас она не особо нужна, т.к. автоматически определяется, подключен звук или нет.


make
make install

Компилируем X11RDP.

Для этого, заходим в каталог xorg/X11R7.6 и вводим команду:

./buildx.sh /opt/X11rdp

Создаем ссылку:

ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp

Добавляем в загрузку:

cp /etc/xrdp/xrdp.sh /etc/init.d/

update-rc.d xrdp.sh defaults
 

Копируем ключ rsa для шифрации:

sudo cp ../xrdp/rsakeys.ini /etc/xrdp

Компилируем пакеты, необходимые для переадресации звука:

sudo apt-get install libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev

Закачиваем исходные коды пакета pulseaudio из http://freedesktop.org/software/pulseaudio/releases/:

tar -zxvf pulseaudio-3.0.tar.gz

Входим в каталог и выполняем:

./configure

Если возникли проблемы при компиляции, то, возможно, вы закачали не тот пакет pulseaudio.

Переходим в каталог xrdp/sesman/chansrv/pulse.

Вам необходимо прокомпилировать библиотеку для передачи звука по XRDP.

Отредактируйте переменную PULSE_DIR на путь к исходным кодам pulseaudio.
После этого выполните:

make

Скопируем библиотеку в pulse (пути могут отличаться в зависимости от версии pulseaudio):

sudo cp module-xrdp-sink.so /usr/lib/pulse-3.0/modules/

Теперь необходимо подредактировать ряд конфигурационных файлов.

Редактируем (или добавляем) файл /etc/asound.conf:

pcm.pulse {
type pulse
}

ctl.pulse {
type pulse
}

pcm.!default {
type pulse
}

ctl.!default {
type pulse
}

Редактируем файл /etc/pulse/default.pa:

.nofail
.fail
load-module module-augment-properties
load-module module-xrdp-sink
load-module module-native-protocol-unix

Перезагружаемся. После этого, если все правильно настроено, у Вас должен передаваться звук по RDP.

 

Автор: Рудюк С . А. http://corp2.net

17 Comments

  1. mxm2

    Еще актуальная тема: использование локального принтера клиента для терминальных пользователей XRDP в Linux Ubuntu

    Reply
  2. rudjuk

    (2) mxm2, Как оказывается, это прекрасно решается с помощью сетевых принтеров. Копайте в сторону CUPS. В статьях я это не описывал, т.к. тут нет ничего особенного.

    Reply
  3. mxm2

    (3) сетевые принтеры — не вопрос, все работает. Вопрос именно с локальными. Скажем пользователь работает в терминале из дома (через интернет), и хочет напечатать на своем домашнем принтере документ непосредственно из терминала. В MS RDP это прекрасно реализовано.

    Reply
  4. rudjuk

    Скажу честно, переброской принтеров не занимался. Мы данную проблему решили путем включения принтеров и пользователей в одну сеть с помощью VPN.

    Reply
  5. q_i
    Компилируем пакеты, необходимые для переадресации звука:

    sudo apt-get install libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev

    Наверное «устанавливаем»?

    Reply
  6. rudjuk

    (6) q_i, Да, устанавливаем.

    Reply
  7. pumbaE

    Почему-бы не собрать пакеты и потом не распространять у себя с помощью aptly ?

    Reply
  8. rudjuk

    (8) pumbaE, В чем выигрыш ? apt-get получает пакеты, скомпилированные под заданную операционную систему заданной версии. Это лучше, чем «универсальные пакеты» в которых могут быть зависимости к библиотекам, которые не совсем подходят для заданной операционной системы.

    Reply
  9. pumbaE

    (9) как обновлять будете на продакшене?

    Reply
  10. rudjuk

    (10) pumbaE, Стандартно. apt-get update | apt-get upgrade 🙂

    Тем Linux Ubuntu и хорош, что делает сам.

    Если вопрос по конфигурации — как обычно, штатными средствами 1С8.3.

    Reply
  11. pumbaE

    (11) те пакеты где «make && make install» ?

    Reply
  12. rudjuk

    Там, где make && make install — компилируется из исходных кодов, которые получаются из системы контроля версий git. Как правило, один раз скомпилировав — эти программные средства работают очень долго. Но, если захочется обновиться — нужно будет заново получить из исходников (которые ведутся в режиме реального времени) и скомпилировать их указанными выше командами.

    Компиляция в заданной операционной среде — это наиболее эффективный способ в данном случае. Т.к. если бы фомировать пакеты нужно было, то нужно было бы компилировать пакет для каждой операционной системы — которых очень, очень много…

    Reply
  13. check2

    Здравствуйте! После первой команды получаю сообщение:

    Чтение списков пакетов… Готово
    E: Вы должны заполнить sources.list, поместив туда URI источников пакетов
    

    Какой источник необходимо указать в файле? Ubuntu 18.04.1 LTS

    Reply
  14. check2

    В конце исполнения команды ./configure —enable-jpeg —enable-simplesound

    configure: error: no nasm (Netwide Assembler) found
    configure: error: ./configure failed for librfxcodec
    

    Это норма или проблема?

    Reply
  15. check2

    (15) C nasm разобрался, необходимо было его установить sudo apt-get install nasm исправило ситуацию.

    Однако вот с переходом в каталог xorg/X11R7.6 так и не понял где жтот каталог должен быть? Поиском не нашёл.

    Нашёл лишь: x11r6 в каталоге /usr/lib/x86_64-linux-gnu/X11/rstart/commands но это явно не то

    Reply
  16. check2

    На Ubuntu 18.04.1 не рекоменду использовать эту статью. Результатом стал убитый xrdp. Собственно поиски решения нашли много копий данной статьи в интернете. Там правда честно написали в конце, что на U16. Одна из них (вероятно всё таки источник) на харбре..

    Тем кто захочет получить звук в xrdp сеансе на U18.04 нужно сюда:

    Включение звука в XRDP сесии Ubuntu 18.04.1

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *