Archives par mot-clé : debian

Osez faire tourner Ableton 32bits sur debian

Je me lance sur un projet qui me tient à cœur depuis un moment, installer Ableton sur Debian et faire en sorte que ça tourne le plus propre possible. Quelle galère!
Cette page est un jet que je vais améliorer au fur et à mesure. Personnellement, je vais refaire au moins une fois la démarche. Aujourd’hui, je lance les grandes lignes, demain, je fignolerai.

Enregistrer une séquence dans Ableton sans que Wine plante, c’est possible et je vais expliquer la démarche globale.

Prérequis: carte son fonctionnelle; dans le doute, à tester avec la commande suivante:

aplay -D hw:0,0 test.wav 
  • Avec pour hw:0,0 ou hw:1,0 ou hw:2:0. Il est important de tester avec un vrai fichier wav, ça ne sert à rien de renommer un fichier .mp3 .wav, il ne sera pas convertit. Il est possible de lister les cartes sons avec la commande « aplay -l ».
root@msi:~$ aplay -l
**** Liste des Périphériques Matériels PLAYBACK ****
carte 0: HDMI [HDA Intel HDMI], périphérique 3: HDMI 0 [HDMI 0]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0
carte 0: HDMI [HDA Intel HDMI], périphérique 7: HDMI 1 [HDMI 1]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0
carte 0: HDMI [HDA Intel HDMI], périphérique 8: HDMI 2 [HDMI 2]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0
carte 1: PCH [HDA Intel PCH], périphérique 0: ALC269VB Analog [ALC269VB Analog]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0
root@msi:~$ aplay -D hw:1,0 ~/test.wav

Je n’ai pas de son par défaut par contre j’ai bien quelque chose qui pourrai fonctionner avec le chipset ALC269VB.

1er tentative: J’ai compilé un driver depuis le site de Realtek, la première fois, ça a bien fonctionné, pas la deuxième. Le problème vient du faite que quand je branche le casque, le son sort toujours des speakers.

2eme tentative: Utilisé l’ALSA native de debian. En fait, il suffit simplement de « démuter » les pistes, c’est à dire, d’activer les petites enceintes avec alsamixergui. Vu que c’est la carte 1 sur la liste:

alsamixergui -c 1

Sur l’image ci dessous, j’ai entouré ce qu’il faut activé. Là, j’ai du son.

capture_alsamixergui

Configuration global:

OS: Debian sans patch realtime du noyau.

Jack avec qjackctl avec rt activé.

wine 1.8.3 avec patch rt.

wineasio compilé.

La plateforme graphique est lxde avec compiz en moteur et emerald en habillage graphique, cairodock pour la barre/dock. Parcontre, Ableton tourne à part sur un autre serveur XORG, donc un autre DISPLAY.

1- Configuration de Jack.

On install jack:

apt-get install qjackctl

Lors de l’installation, lors de l’écran bleu, on active la gestion des processus en temps réel.

Une fois la carte son fonctionnelle pas avant, dans qjackctl onglet Paramètres, activé « Temps réel », pour l’interface choisir la carte son fonctionnelle, pas plus.

Dans l’onglet Options, activé la case de choix Executer un script après le démarrage et mettre : /usr/local/bin/jack-aloop-daemon&

Le script est à télécharger ici.

Il faut activé carte son de bouclage interne. Dans le fichier /etc/modules ajouter :

 echo "snd-aloop" > /etc/modules

Dernière etape pour jack, le fichier .asoundrc dans la racine de l’utilisateur.
Bref placé la fichier dans ~/.asoundrc.

J’ai ajouté le bouton volume pour le systeme dans lxde, utilisable dans cairo-dock.

cd ~
wget https://raw.githubusercontent.com/jbsky/jbsky/master/debian/root/home/USER/.asoundrc

source utils:

https://wiki.debian-fr.xyz/Diagnostiquer_un_probl%C3%A8me_alsa
http://gamesplusone.com/alsa_to_jack.html

2/ Installation de wine

Prérequis:

avoir les sources apt jessie-backports.

Ordre d’installation :

  1. Install wine depuis les backports
  2. compile wineasio
  3. compile wine avec rt.

2.1 Installer les paquets wine et  wine32tools depuis jessie-backports.

dpkg --add-architecture i386 
apt-get update
apt-get install wine wine32-tools wine32 -t jessie-backports

L’option -t permet de désigner le dépôts jessie-backports.

3/ Compiler wineasio

Récuperer le fichier asio.h sur le site de steinberg. Prendre le SDK ASIO, ici je met un lien direct depuis github.
Après avoir compiler et obtenu le fichier wineasio.dll.so, le copier dans /usr/lib/i386-linux-gnu/wine/ et enfin l’enregistrer dans wine depuis bash.

apt-get install libc6-dev-i386 libjack-jackd2-dev libjack-jackd2-dev:i386
wget http://downloads.sourceforge.net/project/wineasio/wineasio-0.9.2.tar.gz 
tar xvf wineasio-0.9.2.tar.gz 
cd wineasio 
wget https://raw.githubusercontent.com/jbsky/jbsky/bf911e3347c723cc936af14d6c0b6b7cf0eed56c/debian/rootfs/home/USER/Download/asio.h 
make 
cp wineasio.dll.so /usr/lib/i386-linux-gnu/wine/ 
regsvr32 wineasio.dll

4/ Compiler wine

J’ai récupéré la source de wine 1.8.3 que j’ai patché avec le realtime.
pour récuperer la source, voir sur le site de wine et

apt-get install gcc-multilib g++-multilib flex bison libx11-dev:i386 libfreetype6-dev
cd /usr/src 
wget http://dl.winehq.org/wine/source/1.8/wine-1.8.3.tar.bz2 
tar xjvf wine-1.8.3.tar.bz2 
apt-get source wine -t jessie-backports 
tar xfv wine_1.8.3-3~bpo8+1.debian.tar.bz2 
wget https://raw.githubusercontent.com/Thaodan/thaopkgs/master/wine-l-pa/wine-rt-101107.patch 
cd /usr/src/wine-1.8.3 
patch -p1 < ../wine-rt-101107.patch 
# ./configure --enable-win64
# ou au choix
./configure --without-freetype 
#./configure --prefix=/usr 
make -j 4
checkinstall

5/ Préparation d’Ableton .

5.1/ Pour l’installation

Avec l’aide de winetricks, préparer l’environnement:

winetricks vcrun2013 vcrun2008 forcemono corefonts

et enfin lancer l’install avec

msiexec /i Setup.msi

5.2/ Pour lancer Ableton

Préparer un script qui va créer un serveur XORG sur un display, accessible avec la combinaison de touche ctrl+alt+F2

#!/bin/bash
export WINE_RT=15
export WINE_SRV_RT=10
sudo true || ( exit 1 )  # Valider le mot de passe
sudo X :3 -ac -terminate # Lance sur un nouveau serveur X affichage 2
sleep 2
DISPLAY=:3 /usr/bin/wine ~/.wine/drive_c/users/Public/Application\ Data/Ableton/Live\ 9\ Suite/Program/Ableton\ Live\ 9\ Suite.exe

WRT1900AC : Créer un système de fichier linux

Objectif

En vue de faire tourner Debian sur le WRT1900AC, en plus de créer un firmware, j’ai du créer un système de fichier linux dont je liste les étapes.

/!\

Stocké le système de fichier linux sur une clef USB est déconseillée sauf si le contrôleur incorpore la technologie du « wear levelling » comme la Sandisk Extrem ou la Corsair voyager GTX. En effet, certains secteurs de stockage s’useront beaucoup trop rapidement à cause des différents fichiers journaux (/var/log), fichier temporaire(/tmp), fichier de pid, etc… Gardez une chose à l’esprit, plus la clef est petite, plus une partie de la clef va s’user rapidement par rapport à l’autre.

Préparation du système

La construction d’un système de fichier se décompose en 2 phases par l’intermediaire du programme debootstrap.

Installation des paquets

apt-get install debootstrap  qemu-user-static arm-none-eabi*
  • Liste des architectures disponible :
alpha amd64 arm arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc ppc64el s390 s390x sh sparc

Phase 1

  • Par exemple :

Pour un routeur WRT1900AC d’architecture armhf :

mkdir  -p /home/WRT1900AC/jessie-armhf
cd /home/WRT1900AC/jessie-armhf
debootstrap --foreign --no-check-gpg --arch=armhf jessie /home/WRT1900AC/jessie-armhf ftp://ftp.debian.org/debian/
cp /usr/bin/qemu-arm-static /home/WRT1900AC/jessie-armhf/usr/bin/
cp /etc/resolv.conf /home/WRT1900AC/jessie-armhf/etc/

Phase 2

  • Avec chroot, on rentre dans le nouveau system de fichier et on exécute la 2e phase.
chroot /home/WRT1900AC/jessie-armhf
echo WRT1900AC > /etc/hostname

/debootstrap/debootstrap --second-stage
  • tweak
passwd -d root

cat << EOF > /etc/apt/sources.list
deb http://ftp.de.debian.org/debian jessie main contrib non-free
deb http://ftp.de.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org/debian-security jessie/updates main contrib non-free
EOF

apt-get update
apt-get install ca-certificates  locales localepurge dialog openssh-server ntpdate debconf

dpkg-reconfigure locales # configure la zone
dpkg-reconfigure tzdata #configure la time zone
 
apt-get dist-upgrade

cat << EOF >> /etc/network/interfaces
allow-hotplug br-lan0
iface br-lan0 inet static
address 192.168.10.10
gateway 192.168.10.1
netmask 255.255.255.0
bridge_ports eth0 eth1
EOF
 
apt-get clean
exit

En 1 script

  • Si on factorise, execution des 2 phases en 1 script :
#!/bin/bash
MACHINE=WRT1900AC
ARCH=armhf
DIR=/home/${MACHINE}
DEPOT=http://ftp.debian.org/debian/
CODE=jessie
IP=192.168.0.1
MASK=255.255.255.0
GW=192.168.0.254
PWD_ROOT=MotDePasse

mkdir  -p ${DIR}/${CODE}-${ARCH}
cd ${DIR}/${CODE}-${ARCH}
echo "1e phase..."
debootstrap --foreign --no-check-gpg --arch=${ARCH} ${CODE} ${DIR}/${CODE}-${ARCH} ${DEPOT}
cp /usr/bin/qemu-arm-static ${DIR}/${CODE}-${ARCH}/usr/bin/
cp /etc/resolv.conf ${DIR}/${CODE}-${ARCH}/etc/
echo ${MACHINE} > ${DIR}/${CODE}-${ARCH}/etc/hostname

cat << EOF > ${DIR}/${CODE}-${ARCH}/startup
echo "2e phase..."
/debootstrap/debootstrap --second-stage

echo "root:${PWD_ROOT}" | chpasswd
cat << FILE > /etc/apt/sources.list
deb ${DEPOT} ${CODE} main contrib non-free
deb ${DEPOT} ${CODE}-updates main contrib non-free
deb http://security.debian.org/debian-security ${CODE}/updates main contrib non-free
FILE
apt-get update
apt-get install ca-certificates  locales localepurge dialog openssh-server ntpdate debconf -y
apt-get dist-upgrade -y
cat << FILE >> /etc/network/interfaces
allow-hotplug eth0
iface eth0 inet static
address ${IP}
gateway ${GW}
netmask ${MASK}
FILE
apt-get clean
exit
EOF
chmod +x ${DIR}/${CODE}-${ARCH}/startup
chroot ${DIR}/${CODE}-${ARCH} /startup
echo "Si besoin :
Pour configurer les variables LC   : dpkg-reconfigure locales
Pour configurer la time zone Paris : dpkg-reconfigure tzdata"


Après le firmware, il faut un système de fichier pour le WRT1900AC.