Skocz do zawartości

Przycisk na USB pod Ubuntu 22.04


pswiton

Pomocna odpowiedź

Ja będę to chciał uruchamiać bez środowiska graficznego lub w ograniczonym środowisku graficznym (w rozdzielczości 1920x1080 ale z widocznym tylko 1920x357 pikseli), więc nie będzie widać całego ekranu. W moim przypadku opcja nasłuchiwania portu serial jest korzystniejsza. 

Link do komentarza
Share on other sites

Przed chwilą, ethanak napisał:

PA w Ubu powinien na dzień dobry przekierować audio na usb jeśli coś podłączyłeś.

Używaj paplay a nie aplay.

I zgadnij, czemu po latach używania Ubuntu wolę czystego Debiana.

Wszystko podłączone jest i dzała na przemysłowym komputerze jednopłytkowym, z automatu ustawione jest wyjście audio wbudowane na płycie.

Link do komentarza
Share on other sites

Czyli nie możesz użyć standardowego PA, bo nie będziesz miał dźwieku bez zalogowania (tak działa PA).

Chyba że masz PA w trybie system, ale to nie jest standard i trzeba pokombinować żeby ruszyło.

Weźcie sobie poczytajcie dokumentację PA.

Link do komentarza
Share on other sites

A na SBC  pewnie działa bo tam masz normalny OS bez PA. Instalowanie Ubuntu w przemysłowym SBC to strzelanie sobie w stopę (pomijając fakt, że to nie jest system dla przemysłu i ktoś, kto na to pozwolił nie powinien mieć mocy decyzyjnej)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

1 godzinę temu, ethanak napisał:

A na SBC  pewnie działa bo tam masz normalny OS bez PA. Instalowanie Ubuntu w przemysłowym SBC to strzelanie sobie w stopę (pomijając fakt, że to nie jest system dla przemysłu i ktoś, kto na to pozwolił nie powinien mieć mocy decyzyjnej)

Wolałbym skupić się na rozwiązaniu niż dywagować decyzje na, które nie mam żadnego wpływu, ktoś wybrał Ubuntu i jedyne co mogę zrobić to dostosować się do jego decyzji. SBC to przemysłowy x86 z SECO. Co oznacza skrót PA (żebym mógł poczytać)?

Link do komentarza
Share on other sites

10 godzin temu, pswiton napisał:

Co oznacza skrót PA (żebym mógł poczytać)?

PA to PulseAudio.

A PulseAudio to serwer dźwięku.

A w Ubuntu serwer dźwięku startuje gdy użytkownik zaloguje się do interfejsu graficznego, i tylko programy uruchomione przez tego użytkownika mają prawo grać. Ot, taki wynalazek coby ludziom życie utrudnić 🙂

Oczywiście można uruchomić PA w trybie "system", ale to trochę dłubaniny w konfiguracji.

Można też nie instalować PA (nigdy nie próbowałem przy Ubuntu, podobno się da) i lecieć gołą Alsą, ale to raczej nie po ubuntowemu, a część programów na Ubuntu wymaga pulsa.

Na razie masz takie coś:

#!/usr/bin/env python3
import serial, subprocess, os

filename="serkey.mp3"
fname=os.path.join((os.path.dirname(os.path.abspath(__file__))),filename)

try:
    serport=serial.Serial('/dev/ttyACM0',115200,timeout=0.1)
except:
    serport=serial.Serial('/dev/ttyACM1',115200,timeout=0.1)

while True:
    r=serport.readline()
    if r.strip() == b'#up':
        subprocess.call(['play','-q','-t','mp3',filename])
        while serport.read():
            pass

Potrzebne pakiety:

  • sox
  • libsox-fmt-all
  • python3-serial

Masz tu kod i testowy plik mp3: serkey.tgz

Plik serkey.mp3 musi być w tym samym folderze co serkey.py - możesz sprawdzić czy wszystko jest zainstalowane wchodząc do tego folderu i wydając polecenie

play -t mp3 serkey.mp3

Aha, nie neguję decyzji kogoś kto wybrał taki czy inny system dla SBC. Tyle że do zastosowań przemysłowych Ubuntu jakoś niespecjalnie mi się widzi - do tego jest raczej RH czy CentOS, ew. Debian. Ubuntu to świetne distro na desktop i tylko desktop (piszę to jako admin pewnego serwera na Ubuntu Server) 🙂 

Dobra, męcz się dalej, powodzenia 🙂

 

  • Lubię! 1
Link do komentarza
Share on other sites

Dzięki za powyższe, zrobiłem wszystko zgodnie z instrukcją. polecenie play -t mp3 serkey.mp3 działa, ale po uruchomieniu programu wyrzuca mi poniższe:

patw@patw-Default-string:/home$ sudo ./serkey.py
play WARN alsa: can't encode 0-bit Unknown or not applicable
play WARN alsa: can't encode 0-bit Unknown or not applicable

Link do komentarza
Share on other sites

Czytałeś to co napisałem wcześniej o PulseAudio?

Uruchamiasz program przez sudo, czyli z roota, czyli z innego uzytkownika, a PulseAudio na to nie pozwala.

Musisz odpalić bez sudo.

Jeśli będzie się pruł o brak dostępu do seriala, musisz dopisać się do grupy dialout:

sudo usermod -a -G dialout twojanazwa

(oczywiście zastąp "twojanazwa" nazwą użytkownika) , wyloguj się i zaloguj jeszcze raz.

 

 

  • Lubię! 1
Link do komentarza
Share on other sites

Ale to jeszcze nie koniec - trzeba jeszcze operować mikserem bo ktoś może wyciszyć dźwięk. Nie było tego bo nie chciałem zaciemniać kodu.

Czyli trzeba doinstalować jeszcze python3-alsaaudio

A nowa wersja programu będzie wyglądać tak:

#!/usr/bin/env python3
import serial, subprocess, os, alsaaudio

volume = 80
filename="serkey.mp3"
fname=os.path.join((os.path.dirname(os.path.abspath(__file__))),filename)

try:
    serport=serial.Serial('/dev/ttyACM0',115200,timeout=0.1)
except:
    serport=serial.Serial('/dev/ttyACM1',115200,timeout=0.1)
M=alsaaudio.Mixer()

while True:
    r=serport.readline()
    if r.strip() == b'#up':
        oldvol = M.getvolume()
        if oldvol[0] < volume or oldvol[1] < volume:
            M.setvolume(volume)
        else:
            oldvol=None
        subprocess.call(['play','-q','-t','mp3',filename])
        if oldvol is not None:
            M.setvolume(oldvol[0],0)
            M.setvolume(oldvol[1],1)
        while serport.read():
            pass
    

Oczywiście do zmiennej volume musisz wpisać minimalną głośność (w procentach) jaką chcesz mieć zamiast tego 80.

Aha, żebyś nie myślał że to wszystko: jesteśmy mniej wiecej w połowie drogi 🙂

Edytowano przez ethanak
  • Lubię! 2
Link do komentarza
Share on other sites

Dzięki, doinstalowałem python3-alsaaudio, regulacja głośności się przyda. 

Podmieniłem jescze #up na #down, bo przycisk ma być wciśnięty, był to mój błąd we wcześniejszym opisie.

Jak dodać tą aplikację do startup w Ubuntu, próbowałem wg poniższego linku i nie działa:

https://linuxconfig.org/how-to-autostart-applications-on-ubuntu-22-04-jammy-jellyfish-linux

Link do komentarza
Share on other sites

No to druga połowa (przestawienie PA z trybu user na system i stworzenie demona). Ale to jutro, bo dzisiaj zajmuję się degustacją pewnego złotego napoju 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.