Feb 22

Mockups for Kdenlive subtitle editor

Veröffentlicht von onny

Regarding the Google Summer of Code 2012 and a nice KDE application called “SubtitleComposer“, I thought about a proposal for the Kdenlive project, to implement a subtitle editor and the ability to load and export subitle files. If the core developers of Kdenlive consider to apply to GSoC2012, this idea may be a possible, supported project for the next months. Otherwise, these mockups could inspire developers already working on such functionality :)

Resize subtitle track

Cut / split subtitle tracks into pieces

Multi column subtitle edit

Add subtitle track

Popup box for editing subtitles

Edit keyframes for every subtitle

Add or remove specific subtitle

Hide or show subtitle editor window

Import different subtitle formats

Import subtitles into your project tree

Many options for exporting the subtitles

Jan 24

Mit diesem Blogpost habe ich mal eine völlig alternative Herangehensweise im Angebot, einen Speedport-Router unter einem nativen Linux-System zu flashen. Als Firmware lässt sich bei einem Speedport W 501V z.B. ein modifiziertes AVM FritzBox-Image oder Freetz einspielen. Die neue Software erweitert den Telekom Router um zahlreiche Funktionen.
Die üblichen Tutorials beschreiben eine Methode, mit der sich mittels einer Ubuntu-VM das speed2fritz Script “platformunabhängig” ausführen lässt oder mit verschiedenen Windows-Tools ein Image erstellt und geflasht werden kann. Mir war es anfangs nicht möglich, das Speed2Fritz Script nativ unter ArchLinux laufen zu lassen, da die Angeschlossenen Router nie erkannt wurden. Doch dank eines kleinen Patch lässt sich der ganze Prozess erheblich vereinfachen!
Als erstes wird speed2fritz aus dem AUR mit dem Packet-Wrapper yaourt kompiliert und installiert:

yaourt -S speed2fritz

Nach erfolgreicher Installation muss die Datei /opt/speed2fritz/includes/includefunctions angepasst werden, z.B. mit einem Texteditor wie vim oder nano. (Bei diesem Quellcodeausschnitt handelt es sich um die Revision 1453). Aus der Passage: [...]

[ $ISALICE ] && kernel_mtd5=$(mktemp -t mtd5_XXX) && dd if=${arg} of=${kernel_mtd5} bs=1k skip=7808 2> ${ddlog} &&\
    grep -q '0 bytes (0 B) copied' ${ddlog} && echo "--> Firmware size < 8MB." && unset ISALICE
      fi
    echo -e "${ECHO_BOLD}${ECHO_ROT}If no restart on its own, you must reboot your box
  fi
  [ $ISALICE ] || kernel_mtd1="
${arg}"
  echo "
Waiting for box to restart ..."
  while [ `ping $ping_params ${IPADDRESS} 2>&1 | grep -c 'nreachable'` != "
0" ] ||\
 [ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "
1" ]; do
   echo -n "
."
   sleep 1
  done
  while [ `ping $ping_params ${IPADDRESS} 2>&1 | grep -c 'nreachable'` != "
0" ] ||\
 [ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "
0" ]; do
   echo -n "
."
  done
  echo -e "
\nInitiating file transfer of 'kernel.image' ...\n"
  echo "
Please be patient, it takes about one minute to erase the mtd1 partition ..."
  [ $FORCE_CLEAR_FLASH ] && autoload=no || autoload=yes

[...] wird folgendes: [...]
[ $ISALICE ] && kernel_mtd5=$(mktemp -t mtd5_XXX) && dd if=${arg} of=${kernel_mtd5} bs=1k skip=7808 2> ${ddlog} &&\
    grep -q '0 bytes (0 B) copied' ${ddlog} && echo "--> Firmware size < 8MB." && unset ISALICE
      fi
 echo -e "${ECHO_BOLD}${ECHO_ROT}If no restart on its own, you must reboot your box again.${ECHO_END}\n"
  fi
  [ $ISALICE ] || kernel_mtd1="${arg}"
  echo "Waiting for box to shut down and restart ..."
  ping -i0.2 ${IPADDRESS}| while read line; do echo $line | grep -Fq "bytes" && break; done
  ping -i0.2 ${IPADDRESS}| while read line; do echo $line | grep -Fq "bytes" && break; done
  #while [ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "1" ]; do
  # echo -n "."
  # sleep 1
  #done
  #while [ `ping $ping_params ${IPADDRESS} 2>&1 | grep -c 'nreachable'` != "0" ] ||\
  #[ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "0" ]; do
  # echo -n "."
  #done
  echo -e "\nInitiating file transfer of 'kernel.image' ...\n"
  echo "Please be patient, it takes about one minute to erase the mtd1 partition ..."
  [ $FORCE_CLEAR_FLASH ] && autoload=no || autoload=yes

Zur Erklärung: Die While-Schleife, die den Router ping’t und überprüft, ob dieser beim Reboot erreichbar ist (der Recovery-Mode mit offenem FTP-Port), ist zu langsam und leider lässt sich selbst der einzelne Ping-Befehl mit passenden Timeout-Parametern nicht schnell genug tunen. Deswegen wird diese Passage (die übrigens öfters im Quelltext auftaucht und ggf. auch dort ersetzt werden muss) ersetzt mit einem Ping-Flood, der konstant läuft und sich beendet, wenn der Router erreichbar ist.
Die Datei muss mit Root-Rechten geöffnet und geschrieben werden! Danach kann schon speed2fritz gestartet werden:

sudo speed2fritz

Im Menü kann jetzt das Modell ausgewählt werden (siehe Bild 1), ein Experten-Modus aktiviert werden (siehe Bild 2), weitere Einstellungen vorgenommen werden und die Konfiguration gespeichert werden (siehe Bild 3). Den Standard Dateinamen bestätigen (Enter) und mit Pfeiltaste nach rechts das Steuerelement “Exit” auswählen. Danach fertigt das Script ein Image an mit den gewünschten Eigenschaften (hierfür muss Internet verfügbar sein!).
Erster Schritt, download der original Firmware-Images bestätigen:

Images extracted… Press ‘ENTER’ to continue

Nach dem modifizieren der Firmware, das eigentliche Image erstellen mit:

Images extracted… Press ‘ENTER’ to continue

Nach einer kurzen Zeit sollte folgender Text erscheinen:

Search active netconnections on: eth0 eth1 eth2 eth3 eth4 eth5
Ethernet card found on: eth0
Parameter in use:
Eth eth0
IP 192.168.178.1
OEM avm
Produkt Fritz_Box_7140_AnnexA
HWResvison 93.1.1.0
kernel_args annex=B
Imagedirectory /opt/speed2fritz/Firmware.new

———————————————————————–
All settings will be removed, because clear mtd3 and mtd4 was selected!
———————————————————————–

Press ‘ENTER’ to proceed!

Erst jetzt kann der noch ausgeschaltete Speedport-Router an den Laptop via Ethernet-Kabel angeschlossen werden. Wichtig: Es sollte kein Netzwerkmanager wie Wicd oder NetworkManager im System aktiv sein, auch sollte kein Dhcp-Client auf dem Interface laufen!
Nachdem die Meldung mit “Enter” bestätigt wurde, kann das Netzteil am Router eingesteckt werden. Das Skript sollte nun die Firmware flashen und den Router neustarten. Sobald dieser erreichbar ist (in der Zeit nicht ausstecken!) unter 192.168.178.1, kann die Weboberfläche gestartet und das Skript beendet werden.

Die komplette Ausgabe des Shell-Scripts gibts hier.

Jan 19

HowTo: AVR in C programmieren mit Eclipse

Veröffentlicht von Benibr


Eclipse ist eine sehr mächtige IDE fürs Programmieren in allen möglichen Sprachen. Beim Versuch alle meine Projekte in einer Programmierumgebung zusammen zufassen bin ich darauf gekommen, dass das Programmieren von AVRs mit Eclipse sehr einfach ist. Ich habe hier kurz zusammengetragen was fürs AVR-C Programmieren in Eclipse notwendig ist.
Ich nutze hierfür Ubuntu 11.10 und Eclipse Indigo (3.7.1) das hier heruntergeladen werden kann.

Zusätzlich sollten noch folgende Packete installiert werden: avr-gcc avr-libc gcc binutils-avr libc6 libc6-dev libc6-dev-i386 avrdude

sudo apt-get update sudo apt-get install avr-gcc avr-libc gcc binutils-avr libc6 libc6-dev libc6-dev-i386 avrdude
sudo apt-get upgrade 
Select Programmer

Select Programmer

Wenn man Eclipse dann startet, kann man gleich von dem tollen neuen programmeigenen Packetmanager Gebrauch machen.
Unter Help ->  Eclipse Marketplace findet man mit dem simplen Suchbegriff “AVR” sofort, das AVR Eclipse Plugin! Ist dies installiert sollte man Eclipse einmal neustarten.

Nun gilt es noch einige Einstellungen vorzunehmen. Unter Window -> Preferences  -> AVR -> AVRDude wird der Programmer angegeben mit dem der Microcontroller geflasht werden soll. Anschließend sollte unter AVR -> Paths überprüft werden, ob Eclipse den Pfad für “AVR-GCC”, “AVR Header Files” und “AVRDude” richtig erkannt hat. Wenn nicht ist vermutlich etwas bei der Insallation der oben aufgeführten Packete fehlgeschlagen. Ansonsten: Apply und dann OK
Anlegen einer Source File

Anlegen einer Source File

Nun können wir mit File -> New ->  C Project ein neues Project erstellen, Name und Ort sind selbsterklärend und als Projekttyp wird “AVR Cross Target Aplication” ausgewählt. Der nächste Schritt bietet uns nun die Möglichkeit die zwei Standardkonfigurationen “Debug” und “Release” anzuwählen. Wenn ihr euch unsicher seid wählt einfach nur Release. In den meisten Fällen reicht das.
Unter  Advanced settings -> AVRDude sollte noch der vorher angelegte Programmer ausgewählt werden, falls dies nicht schon automatisch der Fall ist.  Achtung! Häufiger Fehler: Apply und dann OK.


Auf der nächsten Seite kann man nun den Prozessortyp und die Arbeitsfrequenz einstellen. Fertig! Das Programmieren kann beginnen. Alle Einstellungen können unter Project -> Properties noch im Nachhinein verändert werden.

Mit File -> New -> Source File bzw. Header File können Dateien zu Projekt hinzugefügt werden. Schreibt euren Code und wählt Project -> Build All aus. Wenn er keine Errors beim Kompilieren gibt, könnt ihr anschließen euer Programm mit
AVR -> Upload Project to Target Device auf euren Microcontroller flashen.

Auch wenn für Anfänger Eclipse auf den ersten Blick ein wenig nach Overkill aussehen mag so bietet es doch alle Möglichkeiten die man sich wünschen kann in einer netten grafischen Oberfläche an.

Viel Spass

Flash µC
Flash µC

Update: Ein häufig auftretendes Problem ist, dass AVRDude root-Rechte benötigt um auf den Controller zu schreiben. Dies ist zum Beispiel der Fall bei dem USB zu ISP Wandler den ich benutze (USBasp).
Zur Lösung des Problems muss man eine neue udev Rule anlegen, mit folgendem Befehl:

sudo gedit /etc/udev/rules.d/45-USBasp.rules

In diese Datei wird folgender Inhalt eingetragen:

SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="plugdev", MODE="0660"

Und anschließend muss udev noch neugestartet und der Programmer aus- und wieder eingesteckt werden.

sudo restart udev

 

Quelle: http://78.46.161.153/wiki/index.php?n=Linux.Udev4User

Lokalisiert von Hashi.Modified by project-insanity.