« Elektronik     Kochen »


...wie ich meinem Lenovo S660 Smartphone das GPS gefixt habeMittwoch, 07 Oktober, 2015 19:37

Als die monatlichen Kosten für Smartphone unterwegs online zu sein 10 € erreicht hatten, war dies ausgerechnet bei T-Mobile der Fall und zwar bei der Prepaid Abteilung - wer hätte das gedacht! Zeit für mich, auch endlich einzusteigen und mir einen mobilen Minicomputer zu zulegen.

Mein erstes Smartie war ein Sony Xperia Tipo. So klein, dass es locker in die Hemdtasche ging, fand ich gut, aber auch so klein, dass ich etwas Schwierigkeiten beim Lesen hatte. Es war aber 2 Jahre lang mein treuer Begleiter und hat mich mit Navit und Openstreetmap auch gut durch unbekanntes Terrain gebracht.

Selbstverständlich hatte ich es gerootet. Ich will wohl schon Administrator auf meinen Computern sein :-) und hatte auch schon Pläne geschmiedet, es zu modden. - Leider wollte mir T-Mobile dem Gerät zwar wohl die SIM entsperren, den Bootloader jedoch nicht. Der Traum von alternativen ROMs oder vielleicht Cyanogenmod war ausgeträumt und ich stinkig..., nie wieder wollte ich in D oder der EU ein gefesseltes und geknebeltes Smartie kaufen...

Also stolperte ich über Chinabuy, nachdem mir die Inder ihr YU wohl nicht so gern bzw. Amazon nur über indische Banken verkaufen wollten, wäre auch wohl doch nicht sooo toll geworden, na egal. Ein China-Smartie sollte es dann sein und was war das ein bunter Katalog von Möglichkeiten, so dass ich ganz geblendet ganz vergaß bei der Auswahl doch auf Cyanogen-Kompatibilität zu achten und so kam es, dass ich ein Lenovo S660 kaufte.

Ganz schön großes Brett für ein Smartie, finde ich immer noch. Hemdtasche no go. Hosentasche nur vorübergehend :-) Schön schnell, wahrlich und auch ein schönes Metallgehäuse - nur das GPS war wider Erwarten der große Reinfall. Minutenlanges Warten, bis Satelliten entdeckt werden konnten und dann zeigte es mich nicht auf der Straße, sondern durch die anliegenden Häuser fahren und weit hinten oder weit vorne, es war einfach ein Krampf.

Wiederholte Recherche im deutschen und englischsprachen Bereich brachten zwar Tips, aber keinen Erfolg. Bis ich auf eine russische Webseite stieß, http://lenovo-forums.ru/  die auch erklärte, woran es vermutlich liegt, weswegen Smarties, die eigentlich für den chinesischen Markt bestimmt sind, auf unserem Kontinent nicht oder nicht so gut navigieren können. Interessierte lesen es am besten selbst: http://lenovo-forums.ru/topic/8945-lenovo-s660-улучшение-работы-gps-gps-и-как-с-ним-бороться/  und wer kein russisch kann, wirft es eben bei https://translate.google.de  ein oder so. Die notwendige Software gibt es im Google Marketplace und ich für mein Lenovo S660 hatte endlich Erfolg damit und kann es also weiterempfehlen!

Categories: Elektronik, Hardware, Lifestyle, Selbstgemacht, Software

[ [0] Kommentare ]

Script fur das Arduino RTCpro ModulMittwoch, 08 April, 2015 10:36

Das Folgende betrifft Arduino, eine RTC und die Umgebung ist Linux, deswegen ist es für Windows völlig nutzlos, leider.

Meine batteriegepufferte, temperaturgesteuerte Realtimeclock für den Arduino hat beim Umstecken iwie ihre Pufferung verloren und ich musste sie neu programmieren. Welche Libraries man braucht gibt es bei Adafruit, Instructables und auch anderswo zu finden. Was man auch braucht, ist die Time-Library . Und mit der kann man die Uhr (neu) programmieren. Dazu braucht man den Unixtimestamp der gewünschten Zeit und setzt ein T davor, z. B. T1428486102 für den Mi 8. Apr 09:42:27 2015 und das wird einfach über die serielle Schnittstelle zum Arduino ausgegeben. Das kann man aus der Arduino IDE oder über minicom z. B. machen - oder einfach als echo nach /dev/ttyUSB0 umleiten :)

Aber die Arduino IDE und minicom können beide keine Zeitberechnungen oder gar den Unixtimestamp ausgeben. Und weil der frisch ausgeben von date auch nicht instant verwendet werden kann, habe ich mir mal ein kleines Script gebastelt:

    
#!/bin/sh
NOW=$(date +"%s")
# wintertime
#SOON=$(( $NOW + 3601 ))
# summertime
SOON=$(( $NOW + 7201 ))
echo "Now is $NOW which is:"
date --date="@$NOW"
echo "RTC will be set to T$SOON which is:"
date --date="@$SOON"
echo -e "T$SOON\n">/dev/ttyUSB0

Es ermittelt die gegenwärtige Zeit, passt den Zeitstempel für die Uhr und einen Übertragungszeitraum an, informiert auf der Shell und gibt das gewünschte Ergebnis direkt an der seriellen Schnittstelle aus, ganz so, wie es TimeRTCSet.ino erwartet. Es ist vorbereitet, normale Zeit statt Sommerzeit aufzubereiten und wenn die serielle Schnittstelle woanders ist, muss man das auch im Script anpassen. Ist schnell und schmutzig, ich weiß. Ein schnell mal eben gemachtes Werkzeug, mehr nicht.

Categories: Elektronik, Hardware, Programmierung, Selbstgemacht

[ [0] Kommentare ]

Mein erster Ausflug mit dem Arduino und dem DFRobot LCD Keypad shieldSamstag, 27 Dezember, 2014 17:37

Meine neue Spielwiese sollte der Arduino sein.

Mit Scripting und etwas Programmieren am Computer war ich ja schon vertraut und kam schnell auf die Idee, dass so eine Mikroprozessor-Programmierung ohne Display und Tatatur an der CPU recht uninformiert aufallen könnte. - Mein erster Ausflug sollte also gleich eine Textausgabe und eine Eingabemöglich am Gerät haben, auch wenn ich inzwischen schon bemerkt hatte, dass das Android SDK durchaus eine Wiedergabe der seriellen Konsole vom Arduino hat.

Deswegen hatte ich mir das DFRobot LCD Keypad für den Arduino gekauft, das ein blaues, beleuchtetes Display mit weißer Schrift und 6 Tasten für select, Cursorsteuerung und Reset bietet.

Aprops Arduino, ich hatte mir gekauft den Arduino Pro Mini, den Arduino Funduino, sowie den Arduino Nano gleich doppelt oder auch dreifach, Elektronik raucht schnell mal ab beim Entwickeln, dachte ich mir und die Preise sind ja echt günstig.

Bisher ist alles gut verlaufen :)

Wie man nun anfängt? Nun, ein Vergleich mit Windows und Linux hat mir gezeigt, dass es besser ist, mit Linux zu programmieren, was daran liegt, dass das Hochladen von Software bei Windows nicht geht, wenn der Arduinio am Programmierer oder sofern es geht, am USB-Kabel angeschlossen nicht erkannt wird. Das ist bei Linux kein Problem.

Ein Tip, den ich nach Fehlermeldungen am Windowscomputer beim Hochladen hatte und so nicht als Lösung im Internet gefunden habe:

Programmieren geht am Besten mit nackigen Arduino! Also nicht am Steckbrett, wo er noch mit anderen Modulen verbunden ist!!!

Ein oder mehrere Steckbretter mit kurzen und langen Steckkabeln gibt die Möglichkeit, Module mit dem Arduino zu verbinden, ohne dass man löten muss. Für Arduino geeignete Seriell-zu-USB Module, FTDI basiert, um Arduinos die keinen USB-Anschluss haben verbinden zu können. Geeignete USB-Kabel.

Das Problem auf das ich stieß, als ich das LCD am Arduino anschließen wollte, war, dass ich (natürlich) keine Webseiten fand, die die Verdrahtung ganz genau zeigten. Dokumente, die zeigten, dass man das LCD prima auf den Arduino Uno stecken konnte waren zunächst nicht so die richtige Hilfe... später, als ich mir die PIN-Schematics vom Arduino UNO reingezogen hatte, war alles klar.

Ich habe mal das PIN-Layout des LCD von einer meiner Funde mit XCircuit nachgezeichnet, hier ist es:

-die Anschlüsse, die man braucht, sind alle angehakt. Das ist auf der unteren Seite bei den Buttons Reset, 5V, Ground sowie A0 und auf der Oberseite D4-D9 und D10. Und ja, D11 MOSI ~ ist mir auf dem Bild wohl verloren gegangen und ich hab's zu spät gemerkt. Egal, brauchen wir hier ja nicht :)

Auch nicht unbedingt braucht man Reset und D10 für Backlight Control. Verbunden wird mit dem Arduino 1:1, d.h. LCD D4 geht auf Arduino D4, LCD D5 auf Arduino D5 usw., LCD 5V (Input) geht auf Arduino 5V (Output), GND auf GND und A0 auf A0. Ging bei meinem Funduino ohne weitere Maßnahmen.

Ein Sketch von DFRobot hat mir gut gefallen und modifiziert hatte ich es, weil ich wohl ein LCD V1.0 Board habe und weil ich wissen wollte, wie der Reset arbeitet und wie es ohne Backlight aussieht.

So sieht "der Gerät" aus:

Und so das modifzierte Sketch:

//Sample using LiquidCrystal library
#include <liquidcrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5
#define backLight 10

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor 
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
/*
if (adc_key_in  50)   return btnRIGHT;  
 if (adc_key_in  250)  return btnUP; 
 if (adc_key_in  450)  return btnDOWN; 
 if (adc_key_in  650)  return btnLEFT; 
 if (adc_key_in  850)  return btnSELECT;  
*/
 // For V1.0 comment the other threshold and use the one below:

 if (adc_key_in  50)   return btnRIGHT;  
 if (adc_key_in  195)  return btnUP; 
 if (adc_key_in  380)  return btnDOWN; 
 if (adc_key_in  555)  return btnLEFT; 
 if (adc_key_in  790)  return btnSELECT;   



 return btnNONE;  // when all others fail, return this...
}

void setup()
{
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Push the buttons"); // print a simple message
}
 
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // display seconds elapsed since power-up


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons

  switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
 {
 lcd.print("RIGHT ");
 break;
 }
   case btnLEFT:
 {
 lcd.print("LEFT   ");
 break;
 }
   case btnUP:
 {
 lcd.print("UP    ");
 pinMode(backLight, OUTPUT);  // Backlight off
 break;
 }
   case btnDOWN:
 {
 lcd.print("DOWN  ");
 pinMode(backLight, INPUT);  // Backlight on
 break;
 }
   case btnSELECT:
 {
 lcd.print("SELECT");
 break;
 }
 case btnNONE:
 {
 lcd.print("NONE  ");
 break;
 }
 }

}  
  

Der Reset am LCD bewirkt ein Reset am Arduino, ist das Backlight aus (Cursor up, wieder an mit Cursor down), braucht man ein gut ausgeleuchtetes Display, um etwas lesen zu können. Aber vielleicht kann man ja die Darstellung invertieren und ich finde das noch irgendwann heraus.

Und jetzt geht es erst richtig los mit der Mikroprozessor-Programmierung XD

Categories: Elektronik, Hardware, Programmierung, Selbstgemacht, Software

[ [0] Kommentare ]

Elektrisch dampfen anstelle von Tabak rauchenSonntag, 16 Oktober, 2011 20:41

Elektrisches Dampfen ist eine junge Entwicklung die zurückgeht bis zu den ersten Bemühungen der Firmen Ruyan und Nicstic im Jahre 2005 elektrische Dampfgeräte marktfähig zu machen. Die schweizerische Vertriebsfirma Nicstic existiert seit 2006 nicht mehr, Ruyan ist eine bis heute tätige Firma in China, letztere berichtet Entwicklungszeiten bis zurück in das Jahr 2000. Die Firma Joyetech , ebenfalls in China zuhause, blickt auf eine Firmenhistorie mit Anfängen im Jahre 2007 zurück. Ruyan und Joyetech vertreiben und lizenzieren ihre Produkte international, auch selbst über das Internet. Die Produkte von Ruyan sind Pfeifen und Zigarren/Zigaretten ähnliche Dampfgeräte. Joyetech verzichtet bei seinen Produkten auf Nachahmung von Rauchwaren und setzt auf Funktionalität.

Alle Dampfgeräte arbeiten mit leistungsstarken Akkus (Lithium), einer Verdampfereinheit und einem Liquid - zu ihnen gehört deswegen auch immer ein Ladegerät, i. d. R. irgendwie über USB. Die Geräte haben entweder einen Unterdruckschalter oder einen manuellen.

Die o. g. Firmen und andere produzieren fertig zubereitete Liquids zumeist aus den Basisstoffen Propylenglycol, Glycerin und Wasser, sowie den Zusätzen Aroma und Nikotin, ggfs. Konservierungs- und anderen Stoffen. Liquids gibt es in kleinen Fläschchen zu 10ml, aber auch größere Fläschchen sind bei manchem Anbieter verfügbar. Es gibt eine Vielfalt von Aromen und verschieden hohen Dosierungen mit Nikotin, aber auch Nikotin freie, aromatisierte Liquids werden angeboten und haben ihre Abnehmer.

Die Aromen sind m. W. wasserlösliche Lebensmittelaromen, jedoch sind die Inhaltsstoffe der fertig gemixten Liquids von den Herstellern nicht angegeben - man möchte sich da nicht in die Karten gucken lassen, dennoch gibt es auch aromafreie, mit Nikotin unterschiedlich dosierte Basen zu kaufen, genau wie Aromen für Dampferliquids - zum selber mischen.

Sicher gehen die Ursprünge der Dampfgeräte und ihre Entwicklung auf die Vorlage "Tabak rauchen" zurück und selbstverständlich sind es die Raucher, die sich zuerst für elektrisches Rauchen interessieren. Schließlich wird Dampf erzeugt und inhaliert. Es wird jedoch kein Tabak verbrannt, man muss aber auch keine Nikotin Liquids nehmen und so ist die elektrische Zigarette auch für Nichtraucher interessant und es gibt i. d. T. Dampfer(innen), die auf z. B. Lakritze dampfen stehen :-)

Die gesundheitliche Gefährdung des Dampfenden reduziert sich erheblich - Nikotin gilt nicht als Krebs erregend aber als gesundheitsschädlich, die Basisstoffe gelten als unbedenklich und die Aromen sind als Lebensmittelzusätze zugelassen. Ob und wie viel Reaktionsprodukte beim Verdampfen entstehen ist jedoch noch nicht wissenschaftlich untersucht und sie stellen u. U. eine kleine Unsicherheit dar. Auf jeden Fall ist der Rauch einer Zigarette mit mehren hundert oder tausend verschiedenen Stoffen, die teilweise nachweislich krebserregend sind, auf jeden Fall gesundheitsschädlicher als der Dampf einer Elektrischen Zigarette.

Das Umfeld des Dampfers ist m. E. keiner gesundheitlichen Gefährdung ausgesetzt und i. d. R. findet auch keine Belästigung statt. Elektrische Zigaretten produzieren keinen sekundär Rauch wie eine Zigarette, d. i. der Qualm durch das Abbrennen der Zigarette ohne daran zu ziehen. Es kommt nur dann zu Dampf, wenn der Nutzer sich das Vergnügen gönnt. Auch wenn der Nutzer seinen Genuss an den im Liquid befindlichen Aromen frönt, der Dampf hat so wenig Aroma, dass er für nebenstehende Menschen kaum wahrnehmbar ist und der Dampf löst sich auch ganz auf und bleibt nicht in der Luft stehen. Genau so verhält es sich mit dem Nikotin in der Luft - es wäre nachweisbar aber die Konzentration zu gering um es messen zu können. - Nichtraucher können hier m. E. ruhig ein Auge zudrücken und den Dampfer in ihrer Anwesenheit gewähren lassen!

Für Kinder und Heranwachsene ist der Spass aber denn doch nichts und kann sogar lebensgefährlich sein. Kinder können wohl kaum eine Süssigkeit von einem Erdbeer Liquid unterscheiden - Erwarchsene müssen hier sehr sorgfältig und verantwortungsvoll mit ihrem neuen Genussmittel umgehen, auch anbetrachts der Tatsache, dass Nikotin über die Haut aufgenommen werden kann.

In Deutschland ist elektrisches Dampfen, gemeinhin aber elektrisches Rauchen genannt, noch keinen Regelungen oder Vorschriften unterworfen. Alle notwendigen Geräte und Liquids sind frei erwerbbar. Um sich seine Liquids selbst zu mixen, sind auch alle Stoffe bis auf pures Nikotin frei verfügbar. Nikotin ist pur ein starkes Gift, das nicht in ungeschulte Hände abgegeben werden darf. Jedoch sind herunter reduzierte Basen frei käuflich. Deutschland hat alle Forderungen, Nikotindepots als Medizin einzustufen, bisher noch jedes Mal zurückgewiesen. Aufgrund der neuen Nichtraucher Schutzgesetze besteht jedoch eine gewisse Verfahrens- und Rechtsunsicherheit, wie mit Dampfen umgegangen werden soll. Es gibt Städte wie Köln, die das elekrische Rauchen unter das Nichtrauchergesetz stellten und dadurch Dampfen z. B. in Gaststätten verboten hatten - beim letzten Oktoberfest in Müchen (2011) war Dampfen erlaubt bzw. wurde es toleriert.

Meine persönlichen Erfahrungen und die anderer Dampfer sind positiv. Zu Dampfen hat dazu geführt, dass mir Tabak rauchen nicht mehr wichtig wurde. Die positiven Effekte, die sich dadurch anfänglich einstellen, wie Verbesserung der Lungen- und Geruchsfunktion, sind eine wunderbare Erfahrung und auch die Leute um einen herum haben ihren Anteil daran, stinkt man selbst und die Kleidung doch nicht mehr so nach Rauch. Und ich habe auch keinen Rauchen-abgewöhnen-Stress gehabt und die Rückfallgefahr sehe ich auch eher als klein an. Meine Art Nikotin zu mir zu nehmen, macht mir Spaß, es ist eine Win-Win Situation für mich. All die positiven Effekte, die durch Tabakrauchen aufhören entstehen, kann der Dampfer haben. Demnächst hole ich mir vielleicht auch mal ein 0% Nikotin Lakritze Liquid.

Anfänger möchten vielleicht eine Testzigarette ausprobieren um ein Gefühl zu bekommen, wie Dampfen so ist - es gibt sie in Webshops und im Fachhandel für ca 10€ mit Ladegerät und ein paar Austauschdepots. Einsteigern kann man die eGo-T von Joyetech empfehlen, da sie ein Tank System hat und im Einsteigerset mit 2 kompletten Geräten und mehren Depots besteht die einfache Möglichkeit, verschieden aromatisierte Liquids auszuprobieren, bis man herausgefunden hat, welche Liquids einem gefallen und wärend der eine Akku benutzt wird, kann der andere nachladen. Zudem ist die eGo-T mit einem Gewinde ausgestattet, auf dem viele andere Verdampfertypen passen, sodass man später auf andere Verdampferarten umsteigen kann, wenn sie besser gefallen - denn das muss der Einsteiger mit einkalkulieren, im nächsten Schritt neue Verdampfer einzukaufen, denn sie werden zunehmend schlechter dampfen (Reinigungsmöglichkeiten existieren, sind jedoch nicht jedermann's Sache) und schliesslich auch kaputt gehen (die Glühwendel wird eines Tages durchbrennen). Für Nachschub an Hardware will man also vorgesorgt haben und auch der Akku wird im Dauergebrauch eines Tages nicht mehr wollen! Das Internet bietet hier auch in Deutschland zuverlässig und schnell Nachschub, darüber hinaus ist es ein Quell an Informationen und man kann Kontakte in Dampfer Foren knüpfen, das ist eine enorme Hilfe und Bereicherung. Ausserdem merken auch Tabakläden und Apotheken(!) den Trend, es gibt sogar zunehmend dedizierte offline-Dampfershops in mancher Stadt!

320px-Elektrozigarette.JPG  

Die Reaktionen der Leute sind sehr unterschiedlich. Raucher sind schnell interessiert und reagieren je nach Typ neugierig oder ablehnend. Nichtraucher nehmen den Elektrodampfer u. U. gar nicht so schnell wahr, was nachvollziehbar ist, schließlich ist das nicht ihr Fokus. Die Reaktionen der Nichtraucher sind zumeist sehr positiv, denn es stinkt ja gar nicht, und die Neugierde ist oft sehr gross. Leider gibt es auch Leute, die Dampferei aus dem Bauch heraus ohne Nachzudenken ablehnen - oft lassen sich diese Leute auch nicht mit Aufklärung von ihrem Vorurteil abbringen.

Vor meinem ersten Dampfgerät habe ich viel Internet research betrieben und folgender Shop in Deutschland hat mir sehr gefallen, weil zu den Produkten eigene Videos die Handhabe und allerlei Tricks vermitteln. Meine erste Testzigarette und mein erstes eGo-T Komplettset in silber habe ich von E-Zigarette Online Shop Future Smoke PartyNebula  - weitere sehr empfehlendswerte Videos von Dampferhimmel auf Youtube bilden ja sogar eine Dampferschule :-) ...mein erstes Liquid habe ich von Hans Dampft Elektrische Zigaretten bezogen, 30ml Tabak Cigar weil ich dachte, ich müsse einen Tabakgeschmack haben, jedoch gefallen mir fruchtige Aromen von SYSTEMSMOKE mehr und dieser Shop ist mit seinen Liquids auch recht günstig. Noch günstiger wird es mit Basisliquids und Aromen von SECURUS Dampfshop - Rauchen war gestern hier bei mir. Weitere Shops kann man sich erschließen, viel mehr erfahren als in diesem Artikel, sich helfen lasssen und da bin ich auch in den Foren als Dampfzeug angemeldet: Dampfertreff - Das elektrische Zigaretten Fach-Portal, Infos zum e-rauchen sowie im ERF Elektronisches Rauchen Forum. Erstes ist eher comunity bezogen, zweites eher technisch.

Eine schöne Übersicht zum Nachlesen hält Dampfzeichen bereit.

Update (Ende November): Große Supermärkte haben die Elektrische Zigarette entdeckt und führen neuerdings Geräte im Angebot - leider völlig überteuert und von der möglichen Vielfalt der Aromen und unteschiedlichen Nikotindosierung sieht man nichts. Deswegen möchte ich jedem Leser empfehlen, die beiden Foren zu besuchen und sich dort die Anfängerfibel durchzulesen. Es gibt auch Listen von offline-Shops, u. U. muss man sich erst anmelden. Die Foren sind privat betrieben und haben Verfahren die Nutzer zu beachten haben! - Wer liest und sich informiert, ist klar im Vorteil. Ein Besuch im Fachmarkt ist auch sehr empfehlenswert, denn dort kann man z. T. sehr gut beraten werden und u. U. auch testdampfen bevor man kauft.

Categories: Hardware, Lifestyle

[ [0] Kommentare ]

Media Indexer Entwicklung Status 1Donnerstag, 28 Juli, 2011 2:24

Es gibt ja bereits ein, zwei Media Kataloge für KDE und GTK, die mir aber zu aufgebläht sind und und für meinen Zweck "auf welchem USB Stick befindet sich die Datei xyz?" einfach zuviele Abhängigkeiten mitinstallieren, die ich gar nicht haben will.

Ausserdem will ich mehr C Programmieren und nachdem Perl mit Sqlite3 und zip und unzip Funktionalität gar nichts anfangen konnte, habe ich also mein zweites C Projekt angefangen, das mich sehr beansprucht hat und deswegen gab es auch lange nichts Neues hier zu lesen.

Inzwischen bin ich mit meinem persönlichen Media Indexer aber weit fortgeschritten und möchte an dieser Stelle bereits einmal ein paar Schnipsel Screenshots zeigen. Ich habe wirklich viel C Programmierungstechnik dazugelernt, dazu gleich mehr.

Ich stelle hier nur kurz mal dar, was ich gerne hätte:

Ein Programm, dass gemountetet Datenträger in /media liest, die Informationen in eine Datenbank schreibt, die ich einfach mal abfragen kann und die mir dann schnell Ergebnisse auswirft. Ich hätte ja auch einfach ein "ls -lR > USB-Stick.inhalt" pumpen können und anschliessend ein "grep" draufwerfen können. Das ist schnell erzeugt, das mit schnell ausgelesen irgendwann aber nicht mehr.

Ausserdem sollte dieses Programm kein Konsolenprogramm werden, sondern grafisch für den Desktop sein. Erste positve Erfahrungen hatte ich mit Zenity  schon gesammelt und das sollte auch meinen Ansprüchen genügen.

Dazu sollte eine Datenbank gehören, auch meinetwegen gerne verteilt auf verschiedene Dateien wie eine Datei pro Datenträger und starke Abhängigkeiten wie Server/Client Datenbanken wollte ich auch nicht haben dafür, sondern etwas wie eine Berkely Datenbank.

Meine Wahl fiel jedoch auf Sqlite, das auch in aktuellen Produkten wie Firefox und I-Phone Verwendung findet.

Bisher habe ich Einlesen fertig, hier sind die Screenshots:

Auswahl des/der Datenträger:

Datenträger Auswahl, auch mehrere  

Einlesen der Dateien, hier ist die Dauer ungewiss und durch einen pulsierenden Fortschrittsbalkens dargestellt:

Dateien einlesen

Schreiben der Datenbank mit den zuvor ermittelten Daten, hier ist der Verlauf eindeutig und es kann ein echter Fortschrittsbalken angezeigt werden:

Datenbank schreiben

Fertig:

Ende Hinweis

Ich bin mächtig stolz auf mich, ich kann jetzt nämlich in C Programmen dynamisch Speicher aloziieren, was auch dringend notwendig ist, denn die Menge an Daten von vorher nicht bestimmten Datenträgern kann man nicht fest einprogrammieren.

Ausserdem habe ich gelernt, wie ich mit C nicht nur Sqlite3 Dateien reinpumpe, sondern auch wie ich Pragmas zur Geschwindigkeitsoptimierung verwende und Unterprogramme zum Un-/Komprimieren anmelde.

Eine wahre Wucht und ich freue mich schon auf das Gestalten der Ausgabe...

[Update 01.08.2011]

Meine Vorstellung, für jedes Medium je eine Datenbank zu schreiben und bei Abfragen die Funktion SQLITE_ATTACH zu verwenden, wodurch ich alle Datenbanken über ein Datenbankhandle ansprechen kann und alle Datenbanken wie eine erscheinen, schien ja das voll geile komfortable feature zu sein.

Jedoch bin ich beim Hinsehen auf die Grenzen gestoßen, z. Z. sind da nicht mehr als 62 Datenbanken  drin. Das erscheint mir doch ein bißchen wenig, sodass ich mich beim Datenbank Design kalt erwischt fühle und das wohl ändern muss. Also ist in etwa doch nur eine Datei für alles oder so angesagt, schließlich kann eine Datenbank 2^64 Reihen haben, eine Grenze die man eigentlich gar nicht haben können soll und dann wäre die Datei 14 TB groß. Das Datenbankdesign muss ich mir also nochmal überdenken.

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [0] Kommentare ]

rtl2832u neues build aus neuer Quelle Dienstag, 14 Juni, 2011 10:45

Für meinen "MSI Digi Vox mini Deluxe DVB-T USB Stick" sind die im Mai verwendeten Quellen alt geworden wenn ich neueste Kernel verwenden möchte. In den Kernelquellen sind linux/autoconf.h und linux/smp_lock.h verschwunden (so seit 2.6.37-39) und dann bricht kompilieren natürlich mit Fehler ab.

Aber ich habe eine neue Quelle gefunden und jetzt kompiliert es wieder: http://www.spinics.net/lists/linux-media/msg24890.html 

Diesmal gibt es nicht viel zu tun:

    
mkdir /tmp/dvbt
cd /tmp/dvbt
git clone git://linuxtv.org/mchehab/new_build.git
cd new_build/
wget http://goo.gl/CnJJu -O rtl2832u_v2.0.1-new_build-set.tar.gz
tar -xf rtl2832u_v2.0.1-new_build-set.tar.gz
./build-rtl2832u.sh

sha1sum:
c023031f3cc2cc22a1f40dc5d9fa64968af7307e  rtl2832u_v2.0.1.tar.gz

3aca8850fe118473f25b034239b3bf5648d4a08e rtl2832u_v2.0.1-new_build-set.tar.gz


All credit goes to Realtek, Antti Palosaari, Afatech and V4L/DVB developers.

Nice :-)

Categories: Hardware, Linux, Software

[ [0] Kommentare ]

MSI Digi Vox mini Deluxe DVB-T USB Stick Version 3Sonntag, 08 Mai, 2011 22:41

Für 15€ habe ich den "MSI Digi Vox mini Deluxe DVB-T USB Stick" der mit einer Stummelantenne und einer Fernbedienung, sowie viel Werbematerial von MSI, dafür aber ohne USB-Verlängerung ausgeliefert wurde ergattert, der sogar HDTV 1080i ready ist.

Nun, leider gibt es für diese Gerät mit der USB ID 1d19:1101 keine Kernelunterstützung. Ein Tag Internet Recherche hat mich erst hierhin: http://www.linuxtv.org/wiki/index.php/MSI_DigiVox_mini_II_V3.0  und dann zu dieser Seite mit der Lösung geführt: http://www.turnovfree.net/~stybla/linux/v4l-dvb/lv5tdlx/ 

Bei dem z. Z. aktuellsten Paket 20101102_linux_install_package-Dongle.rar handelt sich um ein für den Chipsatz rtl2832u gepatchtes v4l (in gentoo maskiert: media-tv/v4l-dvb-hg von http://www.linuxtv.org ) samt Install Script. Zum Verständnis: Hier werden ausserhalb der Kernelquellen Module gebaut und ins System installiert.

Und hier ist die Anleitung: http://wiki.ubuntuusers.de/MSI_DigiVox_mini_II . Ich habe jedoch nur ein Blick in das Script geworfen selbst ein "make distclean" ausgeführt und anschliessend mit "make menuconfig" alles überflügsige rausgehaun, denn sonst wird alles und jedes gebaut. Hier ist die die .config Datei aus linux_install_package/v4l_rtl2832_install/v4l-dvb-abd3aac6644e/v4l/.config zum Anschauen, wer die verwenden will, muss ein "make oldconfig" oder ein "make menuconfig" ausführen, bevor kompliliert werden kann. Naja, und dann ein "make" und "make install" wie im Script eben. Dann habe ich nur die Module, die ich wirklich brauche.

Und wirklich, Stick eingesteckt, Module geladen und läuft. Damit es läuft, war noch ein bisschen für die Programme, die ich verwenden möchte notwendig. Vlc und mplayer brauchen eine channels.conf, siehe z. B. hier: http://wiki.ubuntuusers.de/dvb-utils#channels-conf . Der Befehl scan übrigens heißt jetzt dvbscan und ist im Paket media-tv/linuxtv-dvb-apps enthalten.

meine de-BRAUNSCHWEIG sieht so aus:

  
# DVB-T DBraunschweig # Mai 2011 # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE T 768000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE

und die habe ich mir mit der besagten Vorlage und http://dvb-t.the-media-channel.com/nord/dvb-t-braunschweig.html zusammengebastelt und stimmt dann im Detail mit der Realtität überein und unterscheidet sich damit von der /usr/share/dvb/zap/dvb-t/de-Braunschweig (auch aus dem Paket media-tv/linuxtv-dvb-apps enthalten). Die damit erzeugte channels.conf habe ich ein bisschen umsortiert und kann hier angesehen werden: channels.conf .

Sie gehört in das Verzeichnis ~/.mplayer und dann kann man mplayer mit "dvb://XY" (wobei XY dann der Sendername ist) zum TV-Programm anzeigen anweisen.

Vlc kann z. B. mit der Angabe "~/.mplayer/channsels.conf" sofort im TV-Modus gestartet werden, hier fünktioniert auch Programm auf und ab (n und p). Für mplayer habe ich mir auch soetwas gebastelt: dvb.playlist . "mplayer -playlist .mplayer/dvb.playlist" startet dann im TV-Modus und auch hier kann man im Programm auf und ab (> und <).

So, damit bin ich erstmal vollstens zufrieden, EPG Basteleien kommen später.

Categories: Hardware, Linux, Selbstgemacht, Software

[ [0] Kommentare ]

udev Regel für cryptsetup luks verschlüsselte USB DatenträgerFreitag, 29 April, 2011 1:12

In Linux nehme ich gerne andere Windowmanager als KDE oder Gnome, nämlich solche, die wenig Speicher brauchen und die CPU kaum beanspruchen - wie z. B. jwm oder fluxbox. Die kennen keinen Fortschrittsbalken, sondern poppen einfach auf und sind dann da und es kann losgehen. Sie sind winzig und auch klein im Funktionumfang und bringen nicht alles mit, wofür es schon Spezialisten gibt - in jwm bekomme ich Desktop Icons mit rox desktop. Der Lautstärkeregler? gvolwheel. Und so weiter.

Nun gab es aber schon immer das Problem, daß solchen smarten Windowmanagern wirklich etwas völlig und seit ewig fehlte: Ein grafisches Poppup zum Eingeben des Schlüssels, wenn man einen cryptsetup luks verschlüsselten USB Stick angeschlossen hatte.

Im Gentoo Forum habe ich eine schöne Vorlage gefunden für eine udev Regel die in arch Linux funktionierte, nicht aber in Gentoo. Das habe ich untersucht und mit der ersten selbst erstellten udev Regel für mich experimentiert, was man in der udev Regel machen kann und was ein externes Script braucht. Das Problem hatte ich schnell gefunden und es lag hier verborgen: "Running external programs upon certain events ... udev does not run these programs on any active terminal, and it does not execute them under the context of a shell. Be sure to ensure your program is marked executable, if it is a shell script ensure it starts with an appropriate shebang (e.g. #!/bin/sh), and do not expect any standard output to appear on your terminal. (http://reactivated.net/writing_udev_rules.html#external-run )

Was dabei herausgekommen ist, kann man hier sehen:

Leerer Desktop vor dem Einstecken des USB-Sticks 

USB Stick gesteckt, das Fenster poppt auf 

Eingabe des Schlüssels 

Desktop Notify poppt auf 

Der geöffnete /media Ordner 

Der Inhalt des gemounteten Ordners 

Wieder eine Ebene zurück 

Umounten mittels pumount des Ordners mit der Maus 

Der Ordner nun nicht mehr gemountet 

Der USB-Stick wieder herausgezogen 

Download /etc/udev/rules.d/99-crypt.mount.rules weil es hier sonst den Rahmen sprengt :-)

/etc/udev/scripts/crypt.open.sh

 
#!/bin/sh WHAT=$1 WHERE=$2 while [ "$LOOP" != "done" ] do export DISPLAY=":0.0" PASS=`/usr/bin/sudo -u sascha /usr/bin/zenity --entry --hide-text=LUKS \ --text="LUKS open $WHAT at $WHERE" --title "Luks Passphrase" --width 500` if [ $? = 0 ];then # This is the ok button LOOP="run" echo $PASS | /sbin/cryptsetup -t 15 luksOpen $WHAT $WHERE if [ $? = 0 ]; then # Password success LOOP="done" fi else # this catches the cancel button LOOP="done" fi

done

Damit das im Windowmanager mit dem umounten funktioniert, muss der auf pumount eingestellt werden und sys-apps/pmount installiert sein.

Super, was habe ich lange vergeblich nach soetwas gesucht und jetzt konnte ich es sogar selbst fertigstellen.

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [1] Kommentar ]

Notfallsystem auf CF-CardSonntag, 03 April, 2011 21:58

Für lau vom Freund die CF-Card, den Adapter vom Arbeitskollegen, dann ist die Hardware komplett für ein Notfallsystem. Ich habe es bestückt mit Puppy Linux und Tiny Core Linux.

Die CF-Card ist 4GB groß und reicht bei diesen beiden Mini Linux Systemen lange Meter aus. Hier ein Foto:

CF-Card mit Adapter  

Nun kann ich bequem ein Backup machen oder den Computer booten, wenn die Festplatte nicht mehr will.

Categories: Hardware, Linux, Selbstgemacht

[ [0] Kommentare ]

Hacking Samsung SPF-87H - Linux demon v0.0.2Sonntag, 27 Februar, 2011 14:57

Der Deamon ist nicht länger auf /proc/bus/usb/devices angewiesen, wenn diese Pseudodatei nicht existiert, wird in /sys/bus/usb/devices hinabgestiegen und dort nach dem Gerät gesucht.

Hiermit kommt also die v0.0.2 an der sich sonst nichts geändert hat.

Download spf87hd_v0.0.2.tar.gz 

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [0] Kommentare ]

Hacking Samsung SPF-87H - Linux demonMittwoch, 02 Februar, 2011 13:34

Meinen Wunsch, wie ich den Samsung SPF-87H digitalen Bilderrahmen als Zweit-Monitor verwenden möchte, habe ich fertig programmiert. Da Samsung für dieses Gerät leider nur Windowsen unterstützt, guckt man als Linux User diesbezüglich in die Röhre. Das ist nicht (mehr) modern, aber leider Fakt. Nun ja, wenn du etwas gemacht haben willst, mach' es selbst! Und so habe ich mir einen Demon geschrieben.

Der Demon läuft im Hintergrund, schläft überwiegend und guckt dann immer nach einer Sekunde nach, ob das Gerät angeschlossen und im Monitormodus ist - dann schlägt er zu. Die Systemlast läuft gegen Null. Die einfache Lösung erschien mir am Anfang platt, es hat sich aber herausgestellt, daß sie auch die nervenschonenste und auch die Last schonenste ist, jedenfalls ist es nun so, dass ich die Pseudodatei des Kernels /proc/bus/usb/devices nach "Vendor=04e8 ProdID=2034" greppe. Das ist ja auch nicht wirklich eine echte Dateioperation und findet ohne Plattenzugriff allein im Hauptspeicher statt.

Es wird dann der permanente Monitormodus eingeschaltet und, sofern man es angegeben hat, das Kommando für diesen Fall ausgeführt. Da starte ich das Script, dass mir meine Conkys, die auf dem Hauptmonitor laufen, beendet und mir dann mit Xvfb, scrot und jpeg2spf87h, siehe unten, die Bilder auf den SPF-87H pumpt, die ich da sehen möchte.

Der demon kann noch was, denn wenn ich den SPF-87H dann wieder ausschalte, wird das Kommando für diesen Fall gestartet und dann startet er per Script wieder meine Conkys für den Hauptbildschirm.

Im Syslog sieht das so aus:

    
Feb  2 00:09:52 localhost spf87hd[16354]: SPF87H device in monitor mode found.
Feb  2 00:09:53 localhost spf87hd[16354]: claimed device.
Feb  2 00:09:53 localhost spf87hd[16354]: Permanent monitor mode enabled.
Feb  2 00:09:54 localhost spf87hd[16354]: Monitor cmd started.
...
Feb  2 00:11:27 localhost spf87hd[16354]: SPF-87H monitor device gone.
Feb  2 00:11:27 localhost spf87hd[16354]: No-Monitor cmd started.

Im Top:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                   
16354 root      20   0 18692  784  584 S    0  0.0   0:00.95 spf87hd

Na, damit kann man doch zufrieden sein, oder nicht?

Der Demon läuft auch im Vordergrund und kann auch ohne jede Option ausgeführt werden, dann schaltet er nur den permanenten Monitormodus auf dem Gerät ein.

Als demon muss er als root laufen, damit er in /var/run/ auch seine pid Datei schreiben und wieder löschen kann. Als user Prozess kann er auch betrieben werden, dann jedoch nur als Vordergrund Prozeß.

    
  $ ./spf87hd -h
Initializes the SAMSUNG SPF-87H for Linux Monitor Mode when it is set to it.

spf87hd has these Options:

-f, --foreground          Don't deamonize, stay at console.
-n, --nomonitor 'command' Command (unchecked) to be executed after Mini-
  Monitor function has been stopped.
-m, --monitor 'command'   Command (unchecked) to be executed after Mini-
  Monitor function has been started.
-u, --user [name]         Username (must exist) the commands are run by.
-h, --help                This text.
 

Für das Rüberschieben von JPEG Dateien habe ich auch ein eigenes Programm geschrieben, naja, abgeschrieben, wie im Großen und Ganzen eigentlich alles abgeschrieben, angepaßt und modifiziert ist. Dafür hat es aber auch sehr wenig Systemlast und produziert keine Beschwerden des Kernels mehr, "...process 24676 (jpeg2spf87h) did not claim interface 0 before use". Und ich verwende da libusb_bulk_transfer, genau wie der Windows Treiber auch bulk transfer verwendet.

Fehler passieren, die ich nicht verhindern kann. Bei hoher Systemlast ist es so, dass hier bei mir das Bilder rübersenden nicht immer funktioniert. Das ist aber kein Fehler von jpeg2spf87h, sondern eine Folge der Arbeit des Kernels in so einer Situation, jpeg2spf87h ist eben userland. Ausserdem gerät das Gerät manchmal aus dem Monitormodus hinein in den Datenträgermodus, das ist aber selten und kann durch einen Neustart des SPF-87H behoben werden. Ich merke das an der Bildschirmmeldung die dann kommt, sinngemäß steht dann da, der Datenspeicher sei fast voll und ich solle Dateien löschen wenn ich da Platz brauche. Diese Meldung fehlt vermutlich wenn Platz ist, dann merkt man es wohl nur daran, dass das Bild nicht mehr aktualisiert wird. Vermutlich ist das ein Bug in der Firmware, nur habe ich wenig Lust die neue Firmware einzuspielen die diesen Bug behebt, mir aber meine ganze Arbeit vielleicht wieder zunichte macht. Wer weiß? Never change a running sytem, you know? Aber vielleicht kann mir ja ein Leser mit der neuesten Firmware da mal was berichten...

Für die Realisation dieses kleinen aber anstrengenden Projektes habe ich also vielen Leuten zu danken, sie sind alle in den Quellen aufgeführt. Ja, opensource ist eine tolle Sache, ohne hätte ich meinen Samsung SPF-87H wohl wieder verkauft, oder nein, zum Kauf wäre es gar nicht erst gekommen. So wird mein Dank noch größer und geht auch an Samsung, denn ohne diese Versorgungslücke hätte ich mich gar nicht in diese Arbeit gestürzt. Da aber auch ohne Opensource ohne Hintergrund und Basis dieses Projekt gar nicht möglich gewesen wäre, ist es sogar so, daß ich gar nicht allen danken kann. Was ich aber tun kann, ist, das was ich gemacht habe, wieder zu veröffentlichen.

Wer also Lust hat, den Code einmal zu begutachten oder als Vorlage für sein eigenes Projekt nehmen möchte, oder wenn Du sogar selbst einen Samsung SPF-87H mit dieser bescheuerten, broken by design Firmware hast, dann hättest du ja sogar selbst dafür Verwendung.

Downloads:

spf87hd_v0.0.1.tar.gz 

jpeg2spf87h_v0.0.1.tar.gz 

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [1] Kommentar ]

Hacking Samsung SPF-87HMontag, 17 Januar, 2011 2:52

Der Digitale Bilderrahmen Samsung SPF-87H  kann unter Windows als Zusatzbildschirm verwendet werden. Auf http://vdrportal.de/board/thread.php?postid=947900   zeichnete sich ab, dass es auch mit Linux läuft.

Nun, da es mir keiner programmiert hat, musste ich es selbst tun und ein verschnupftes Wochenende weiter mit viel Internetsuche und viel Code kopieren und zusammenwürfeln und vor allem einem USB Verkehr Mitschnitt durch Wireshark war es schließlich soweit:

spf87h-tool , mein erstes C-Programm, das die ermittelte Codesequenz zum Bildschirm schickt, damit der im Monitormodus bleibt, ist fertig (UPDATE: Ich arbeite gerade an einem Deamon, damit man den Bildschirm nur "anschalten" muss und der rest automagisch funktioniert).

Der Samsung SPF-87H Digitale Bilderrahmen ist nun nicht länger nur ein Windows Werkzeug, sondern mir auch in Gentoo Linux zu Diensten und ich habe jetzt einen Zweitbildschirm, auf den ich meine Conkies auslagere, so habe ich auch in Vollbilddarstellung auf dem Hauptmonitor schnell mal auf den kleinen Samsung erblickt, was mein System so macht und wie das Wetter wird.

Nun kann ich den Monitor einschalten, Mini Monitor Modus auswählen, das Programm spf87h-tool starten, dann geht es los :

SPF-87H.sh

#!/bin/sh
killall conky 2>&1 >/dev/null
killall Xvfb 2>&1 >/dev/null
rm /tmp/.X13-lock 2>&1 >/dev/null
Xvfb :13 -screen 0 480x800x16 &
sleep 5
/home/sascha/SPF-87H/playusb/playusb -j /tmp/ram/xwud.jpg
export DISPLAY=:13.0
conky -p 0 -c /home/sascha/SPF-87H/conky/.conkyWeather &
conky -p 4 -c /home/sascha/SPF-87H/conky/.conkySystem &
conky -p 6 -c /home/sascha/SPF-87H/conky/.conkyCal &
conky -p 8 -c /home/sascha/SPF-87H/conky/nixie_clock.conkyrc &
while `grep -q 'Vendor=04e8 ProdID=2034' /proc/bus/usb/devices`
do
scrot /tmp/ram/xwud.jpg -q 100
jpegtran -rotate 90 -trim -outfile /tmp/ram/xwud.jpg /tmp/ram/xwud.jpg
/home/sascha/SPF-87H/playusb/playusb -j /tmp/ram/xwud.jpg
done
killall conky 2>&1 >/dev/null
killall Xvfb 2>&1 >/dev/null
sudo rm /tmp/.X13-lock 2>&1 >/dev/null
exit 0

Ach ja, /tmp/ram, das mounte ich per

/etc/fstab

  none /tmp/ram tmpfs mode=1777,size=512M 0 0

Durch tmpfs kann ich Dateien im RAM ablegen und verarbeiten, das verschnellert den Prozess enorm. Sogar meine nixie Röhren Digital Uhr mit Sekunden läuft im Zweitbildschirm dann ganz aktzeptabel.

Categories: Hardware, Linux, Programmierung, Selbstgemacht, Software

[ [1] Kommentar ]

« Elektronik     Kochen »