Betty als MPD client

Begonnen von phaidros, 13. Okt 2009, 03:36

« vorheriges - nächstes »
Nach unten

Fux

#30
20. Nov 2010, 00:27 Last Edit: 20. Nov 2010, 02:21 by Fux
Wenn ich die mcbetty.bin auf die Betty flashe geht nur die Hintergrundbeleuchtung an, ansonsten passiert gar nichts. Kennt jemand diesen Effekt?
Die Boop-Firmware funktioniert im Gegensatz einwandfrei.
EDIT: Hab zwei Fernbedienungen, bei der zweiten läuft McBetty jetzt. Die erste hat jedoch immer noch obiges Phänomen.


Wenn ich woanders als auf der Betty z.B. einen anderen Titel aktualisiere, dann wird die Betty leider nicht aktualisiert. Ist das ein Bug oder fehlt dieses Feature noch?
Title-Skip funktioniert sehr gut, jedoch lassen sich die Playlisten nur hin und wieder auswählen, meistens passiert einfach keine Reaktion, ist das jemanden bekannt?

Gruß
Fux

jannis

Dass das Ding n par Bugs hat seh ich auch so. Bei mir funzt es immer wieder nach ein par resets. Aber frag mich nicht warum...

gerdigerdi

So meine Betty ist im Wirkbetrieb :)
Meine Frau ist happy .. endlich keinen TV mehr anschalten um die Titel auszuwählen.

Auch wenn die Version etwas buggy ist (keinen Plan ob es an meinen Änderungen liegt (siehe oben) langt bei mir für einen schnellen Reset ein leichtes "Aufdotzen" mit der Unterkante auf den Tisch. Ob das aufgrund der Akkuaufnahme so gewollt ist ? :P

Hoffe ich finde mal wieder Zeit an dem klasse Projekt mit zu helfen.   

phaidros

Es gibt eine neue Version von McBetty auf http://www.ewetel.net/~horst.raap

Version 0.8.1. enthält hauptsächlich Bugfixes.

Außerdem ist jetzt Random, Repat und Single Mode (siehe MPD) möglich.

Enjoy the music!

Phaidros

Fux

Wow, danke für das vorweihnachtliche Geschenk  :)

Muss alles aktualisiert werden, auch das Scart-Interface? Könnte jemand ggf. wieder ein "boop_rom_mitMCBetty" Image hochladen.

Danke!

Gruß
Fux

phaidros

Ja, leider muss alles aktualisiert werden.

Wenn bereits einmal die McBetty Firmware auf den Scart Adapter geflasht wurde, lässt er sich
(vielleicht) über die serielle Schnittstelle flashen. Im README von scart_image steht was dazu.
Geht meistens. Wenn man den Scart Adapter einmal power-cycelt sogar eigentlich immer.
Ich empfehle die aktuelle Version aus dem git-hub, da ist noch eine kleine Verbesserung gegenüber
Version 0.8.1 drin.

Gruß
Phaidros

Fux

#36
22. Dez 2010, 21:29 Last Edit: 22. Dez 2010, 22:05 by Fux
Bei mir lässt sich das Scart-Interface leider nicht direkt mit dem flashtool flashen (McBetty 0.7 ist aktuell drauf).
Version ist die aktuelle aus dem Git.
:/usr/src/mpd/mcbetty/git/McBetty/scart_image$ ./flashtool /dev/ttyUSB0
Sending break
Read 0 characters:

Read 0 characters:

buffer[0] = 00
Error: Could not negotiate baud rate!


Es kommt eine Fehlermeldung beim kompilieren, vielleicht liegt es daran?
:/usr/src/mpd/mcbetty/git/McBetty/scart_image$ make
gcc bin2c.c -o bin2c
gcc makebin.c -o makebin
/usr/bin/sdcc --iram-size 0x100 --model-small --code-size 8192 -I/include -c main.c
/usr/bin/sdcc --iram-size 0x100 --model-small --code-size 8192 -I/include -c serial.c
/usr/bin/sdcc --iram-size 0x100 --model-small --code-size 8192 -I/include -c cc1100.c
cc1100.c:53:1: warning: "SMARTRF_SETTING_PKTCTRL1" redefined
In file included from cc1100.c:21:
smartrf_CC1100.h:73:1: warning: this is the location of the previous definition
cc1100.c:54:1: warning: "SMARTRF_SETTING_IOCFG0D" redefined
smartrf_CC1100.h:72:1: warning: this is the location of the previous definition
cc1100.c:55:1: warning: "SMARTRF_SETTING_IOCFG2" redefined
smartrf_CC1100.h:71:1: warning: this is the location of the previous definition
cc1100.c:56:1: warning: "SMARTRF_SETTING_FIFOTHR" redefined
smartrf_CC1100.h:70:1: warning: this is the location of the previous definition
/usr/bin/sdcc --iram-size 0x100 --model-small --code-size 8192 -I/include main.rel  serial.rel cc1100.rel  -o betty_scart.ihx
./makebin -s 7680 <betty_scart.ihx >betty_scart.bin
./bin2c scart_image 7680 <betty_scart.bin >scart_image.h
gcc flashtool.c -o flashtool
asx8051 -losg isp.asm
/usr/bin/sdcc --iram-size 0x100 --model-small --code-size 8192 -I/include main.rel  serial.rel cc1100.rel isp.rel -o betty_scart_boot.ihx
./makebin -s 8192  <betty_scart_boot.ihx >betty_scart_boot.bin
./bin2c scart_image 8192 <betty_scart_boot.bin >scart_image_boot.h
cp scart_image_boot.h boop.orig/tools/scart_image.h
cd boop.orig && make clean && make
make[1]: Betrete Verzeichnis '/usr/src/mpd/mcbetty/git/McBetty/scart_image/boop.orig'
rm -Rf .deps adc/.deps audio/.deps cc1100/.deps display/.deps flash/.deps games/.deps gui/.deps infrared/.deps interrupt/.deps keyboard/.deps rtc/.deps serial/.deps timer/.deps tools/.deps
rm -f crt.o main.o global.o audio/soundirq.o infrared/infraredirq.o interrupt/irq.o keyboard/keyirq.o timer/timerirq.o adc/adc.thumb.o adc/adcirq.thumb.o audio/sound.thumb.o audio/sid.thumb.o cc1100/cc1100.thumb.o cc1100/rf.thumb.o display/lcd.thumb.o display/fonty.thumb.o display/backlight.thumb.o flash/flash.thumb.o flash/bfs.thumb.o games/gamesmenu.thumb.o games/tic_tac_toe.thumb.o games/sokoban.thumb.o games/connect4.thumb.o gui/menu.thumb.o gui/mainmenu.thumb.o gui/testmenu.thumb.o gui/settingsmenu.thumb.o gui/controls.thumb.o infrared/infrared.thumb.o infrared/codes.thumb.o infrared/encoders.thumb.o infrared/ir_capture.thumb.o infrared/ir_selector.thumb.o keyboard/keyboard.thumb.o rtc/rtc.thumb.o rtc/i2c.thumb.o serial/serial.thumb.o timer/timerfuncs.thumb.o tools/toolsmenu.thumb.o tools/scart_icp.thumb.o infrared/ir_itt.thumbunopt.o infrared/ir_nrc17.thumbunopt.o infrared/ir_raw.thumbunopt.o infrared/ir_rc5.thumbunopt.o infrared/ir_rc6.thumbunopt.o infrared/ir_rca.thumbunopt.o infrared/ir_rcmm.thumbunopt.o infrared/ir_rec80.thumbunopt.o infrared/ir_recs80.thumbunopt.o infrared/ir_rf.thumbunopt.o infrared/ir_sirc.thumbunopt.o infrared/ir_spaceenc.thumbunopt.o *.elf *.bin *.hex *~
make[1]: Verlasse Verzeichnis '/usr/src/mpd/mcbetty/git/McBetty/scart_image/boop.orig'
make[1]: Betrete Verzeichnis '/usr/src/mpd/mcbetty/git/McBetty/scart_image/boop.orig'
mkdir -p .deps
mkdir -p adc/.deps
mkdir -p audio/.deps
mkdir -p cc1100/.deps
mkdir -p display/.deps
mkdir -p flash/.deps
mkdir -p games/.deps
mkdir -p gui/.deps
mkdir -p infrared/.deps
mkdir -p interrupt/.deps
mkdir -p keyboard/.deps
mkdir -p rtc/.deps
mkdir -p serial/.deps
mkdir -p timer/.deps
mkdir -p tools/.deps
/home/raap/CodeSourcery/Sourcery_G++_Lite/bin/arm-uclinuxeabi-as -mcpu=arm7tdmi-s -D --gstabs -mthumb-interwork -mfpu=softfpa -o crt.o crt.s
make[1]: /home/raap/CodeSourcery/Sourcery_G++_Lite/bin/arm-uclinuxeabi-as: Kommando nicht gefunden
make[1]: *** [crt.o] Fehler 127
make[1]: Verlasse Verzeichnis '/usr/src/mpd/mcbetty/git/McBetty/scart_image/boop.orig'
make: *** [betty_flasher] Fehler 2


EDIT:
Ich habe zwei Betty Fernbedienungen. Das Flashen hatte bei einer mit der Version 0.7 partout trotz mehrmaliger Versuche nicht geklappt. Konnte eben beide auf die git-Version der McBetty flashen. Nur als positive Rückmeldung :-).
Flashen des Scart-Interfaces klappt weiterhin nicht.

Gruß
Fux

phaidros

Zitat
make[1]: /home/raap/CodeSourcery/Sourcery_G++_Lite/bin/arm-uclinuxeabi-as: Kommando nicht gefunden

Oh, da habe ich meinen Pfad zu der CodeSourcery Toolchain im Makefile.
Das müsstest du ändern.

Also wenn das Flashen mit dem flashtool nicht geht:
(passiert bei mir auch manchmal, obwohl ein-und wieder ausstöpseln des Netzsteckers vom Scart-Adapter und dann nochmal flashstool probieren bei mit immer geht)
Bitte auch checken, ob /dev/ttyUSB0 das richtige Device ist, an dem der Scart Adapter hängt!
 
Unter scart_image/boop.orig sollte eine Datei boop_rom.bin liegen, Diese auf die Betty flashen, dann kann mithilfe der Betty der  Scart-Adapter geflasht werden.
Wenn man die Datei selber erzeugen will:
cd scart_image
make betty_flasher

Die Pfade zu den Tools (Codesourcery und sdcc) müssen in den Makefiles angepasst werden wenn man selbst kompiliert.

Ich hoffe es klappt.

Gruß
Phaidros

gerdigerdi

Wenn ich das richtig verstanden habe, sollte flashen des scart_adapters per seriell mit dem flashtool funktionieren, wenn bereits eine MCBetty-scart-version geflasht war. Langt da die 7.X?

Muss neben rx/tx/gnd/vcc noch etwas anderes angeschlossen sein zum seriellen flashen? So wie es aussieht ignoriert mein scart adapter (mit bettyscart 7.X) den BREAK. (es kommt weiterhin "Status" von der betty rein.)

Compilieren hat fast perfekt geklappt. nur u_int16_t ist bei meiner toolchain nicht defined.

Werde die tage dann wohl den scart wieder per betty flashen. Würde mich nur interessieren wiso das bei mir (uns) nicht klappt. (Ich benutze einen cp210x converter).

phaidros

Zitat
Langt da die 7.X?

Weiß ich leider auch nicht mehr so genau. Da gab es zwei Versionen der Scart-Adapter Firmware. Eine mit Bootloader, eine ohne.
Außerdem musste noch was an den Config-Bytes geflasht werden, was bisher nur Betty(Boop) konnte. Jetzt kann das aber auch Flashtool.

Zitat
Muss neben rx/tx/gnd/vcc noch etwas anderes angeschlossen sein zum seriellen flashen?

Definitiv nein.

Zitat
Ich benutze einen cp210x converter.

Vielleicht kann der kein BREAK senden? Ich habe den Scart-Adapter an einem echten seriellen Anschluss dran.

Gruß
Phaidros


gerdigerdi

Wird sich ja klären wenn die neue scart-version geflashed ist.

Hab erstmal die neue Version auf die Betty geflashed. Sieht wirklich gut aus:
- Seitenweises Blättern (hast du wirklich eleganter implementiert als ich)
in Play- und Tracklist! genial!
- Random mode usw. durchaus funktional

ABER wiso aktualisiert die Betty die Lautstärke auch wenn sie nicht geändert wurde? (bzw. von ausserhalb geändert wurde).
Das ist ein fatales Problem für mich. Ich pausiere die Wiedergabe immer nur und switche dann zum TV-modus. Wenn ich da nun die Lautstärke ändere wird sie nach kurzer Zeit wieder zurückgesetzt. Betty sollte die von aussen gesetzte Lautstärke eher übernehmen, oder?

Schön das wieder Leben in das Projekt kommt ;)

MfG
Gerdi

jannis

Betty geht immer davon aus, dass sie alleiniger Client ist. Den Lautstaerkepegel speichert sie auf der Fernbedienung ab, und der wird dann spaeter erneut so von mpd angefordert. Nur wundere ich mich, dass betty ueberhaupt eine Lautstaerkeanfrage macht ohne dass man die Tasten dafuer drueckt. Hatte ich anders verstanden als ich damals den code lass.

Fux

#42
24. Dez 2010, 21:03 Last Edit: 24. Dez 2010, 22:38 by Fux

Die Pfade zu den Tools (Codesourcery und sdcc) müssen in den Makefiles angepasst werden wenn man selbst kompiliert.
Ok, ich hab mir der einfachheit halber auch einen /home/raap Ordner erstellt und dorthin die Codesourcery installiert.
Make läuft eine Weile und bringt dann einen Fehler, mit dem ich leider nichts anfangen kann:
/home/raap/CodeSourcery/Sourcery_G++_Lite/bin/arm-uclinuxeabi-gcc -mcpu=arm7tdmi-s -Wall -mthumb-interwork -msoft-float -I/home/raap/CodeSourcery/Sourcery_G++_Lite/include -I. -Iinterrupt -Idisplay -Ikeyboard -Ikernel -Iaudio -Iinfrared -Iserial -Iflash -Icc1100 -Igui -Itimer -Igames -Iadc -Irtc  -Itools -Ipwm -Impd -O2 -c  -MMD -MF serial/.deps/serial.o -o serial/serial.o serial/serial.c
/home/raap/CodeSourcery/Sourcery_G++_Lite/bin/arm-uclinuxeabi-ld -Tlpc2220_rom.ld -Map boop.map -L/home/raap/CodeSourcery/Sourcery_G++_Lite/lib/gcc/arm-uclinuxeabi/4.3.2 -o muc_rom.elf crt.o isr.o arm_exc.o global.o main.o cc1100/cc1100.o cc1100/rf.o display/lcd.o display/fonty.o display/window.o display/screen.o display/screen_playing.o display/screen_tracklist.o display/screen_playlist.o display/screen_info.o interrupt/irq.o pwm/pwmirq.o keyboard/keyboard.o kernel/kernel.o timer/timerirq.o mpd/model.o mpd/mpd.o serial/serial.o -lgcc
/home/raap/CodeSourcery/Sourcery_G++_Lite/bin/arm-uclinuxeabi-ld.real: cannot find -lgcc
make: *** [muc_rom.elf] Fehler 1
EDIT: Habs jetzt über folgenden Workaround in den Griff bekommen:

  • libgcc.a aus dem CodeSourcery lib Verzeichnis (CodeSourcery/Sourcery_G++_Lite/lib/gcc/arm-uclinuxeabi/4.5.1) in das muc Source-Verzeichnis kopieren (McBetty/muc)

  • statt dem angehängten -lgcc ein "libgcc.a" anhängen




Da ich viele Alben höre, habe ich mir ein Bash-Skript geschrieben, welches in der Playliste zum ersten Titel des aktuellen bzw. vorherigen Album springt (siehe http://mpd.wikia.com/wiki/Hack:mpdNextAlbum).
D.h ich möchte mit dem "PROG+/PROG-" Button auf der Fernbedienung dieses Skript aufrufen. Kannst Du mir grob sagen, an welchen Stellen (Button-Abfrage der FB und wo Aufruf des Skripts im mpdtool) ich im Code dies mir einbauen kann? Bzw. muß ich dem mpdtool hierzu einen bestimmten Befehl schicken? Ich kenn mich leider mit C nur rudimentär aus.

Danke!

EDIT: Noch eine andere Frage, auf der Betty Webseite ist auf den Screenshots der Playliste zu sehen: "100 Lastest Tracks" bzw. "500 Random Tracks", wie werden denn diese Tracks "erzeugt", ist das im Code enthalten oder extern per Skript?

Grüße
Fux

phaidros

 
Zitat
Betty sollte die von aussen gesetzte Lautstärke eher übernehmen, oder?



Ja, ist in der neuesten Version auf git-hub geändert. Ich benutze tatsächlich Betty im Moment als einzigen Client.
Jetzt wird die Lautstärke nur auf Tastendruck von Betty geändert und ansonsten die extern eingestellte Lautstärke
akzeptiert.

Gruß
Phaidros

phaidros



Zitat
Da ich viele Alben höre, habe ich mir ein Bash-Skript geschrieben, welches in der Playliste zum ersten Titel des aktuellen bzw. vorherigen Album springt (siehe http://mpd.wikia.com/wiki/Hack:mpdNextAlbum).
D.h ich möchte mit dem "PROG+/PROG-" Button auf der Fernbedienung dieses Skript aufrufen. Kannst Du mir grob sagen, an welchen Stellen (Button-Abfrage der FB und wo Aufruf des Skripts im mpdtool) ich im Code dies mir einbauen kann? Bzw. muß ich dem mpdtool hierzu einen bestimmten Befehl schicken? Ich kenn mich leider mit C nur rudimentär aus.


In der neuesten Version auf git-hub ist das testweise drin. Wenn man im Playing-Screen (da wo Titel und Spieldauer und so angezeigt werden) auf "A" drückt, wird das Script
"script_1.sh" im aktuellen Verzeichnis von mpdtool aufgerufen. Taste "B" ruft "script_2.sh" auf. Ist aber noch nicht ausführlich geteste!

Zitat
Noch eine andere Frage, auf der Betty Webseite ist auf den Screenshots der Playliste zu sehen: "100 Lastest Tracks" bzw. "500 Random Tracks", wie werden denn diese Tracks "erzeugt", ist das im Code enthalten oder extern per Skript?


Extern per Script. So eine Funktion auf der Betty wäre noch schön, so etwas wie Smart-Playlists bei Amarok. Ist aber schwierig. Mal schauen.

Gruß
Phaidros

Nach oben