14.08.2012, 09:53 (Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2012, 09:59 von snowyrain.)
Hallo,
ersteinmal vielen Dank für die ausführliche Beschreibung, da traue sogar ich mir einen Nachbau zu. Ich versuche es gerade nachzubauen, da ich gerne einen "Einschalter" hätte. Nun zu meiner Fragen:
- Kann es sein, dass im Wiki ein Fehler bei den Widerständer in der Lochrasterdarstellung ist? Ich glaube die Widerstände sind dort vertauscht.
- Kann es sein, dass der Optokoppler in der Lochrasterdarstellung verdreht ist?
(14.08.2012, 09:53)snowyrain link schrieb: - Kann es sein, dass im Wiki ein Fehler bei den Widerständer in der Lochrasterdarstellung ist? Ich glaube die Widerstände sind dort vertauscht.
- Kann es sein, dass der Optokoppler in der Lochrasterdarstellung verdreht ist?
Ja und Ja. Es wundert mich nur das es bis jetzt niemandem aufgefallen ist. Werde da aber erst ab dem 10.09. zu kommen (hab aber schon mal im Wiki gewarnt).
Vielen Dank.
muebau
Standard Digitainer + Wlan Atheros + Nova-S Plus + EasyVDR 0.6.10
TC380 + E35M1-M PRO + Wlan Atheros + Nova-S Plus + EasyVDR 0.9
vielen Dank für Deine Antwort. Ich habe es jetzt zusammen gelötet und ich kann auch RC-Codes empfangen. Ich habe die main.hex von https://github.com/realglotzi/irmpusb geflasht. Als Software nutze ich die das Windows Tool "USB IR Remote Receiver". Hier sehe ich schön die RC-Codes, leider kann ich den IR-Code für die Power-On Funktion nicht anlernen.
(14.08.2012, 14:42)snowyrain link schrieb: Kannst Du mir sagen, was ich falsch mache?
(12.07.2012, 22:03)glotzi link schrieb: Ähm mir ist gerade eingefallen, daß das Hex-File ohne PowerOn-Code ist. Das passt dann leider nicht so ganz zum Thread-Titel. :o
Sollte sich da nichts geändert haben so wird dies der Grund sein.
Also neu bauen und glotzi eine Version (*..._power_on.hex) zum pushen für Repository geben.
muebau
Standard Digitainer + Wlan Atheros + Nova-S Plus + EasyVDR 0.6.10
TC380 + E35M1-M PRO + Wlan Atheros + Nova-S Plus + EasyVDR 0.9
14.08.2012, 16:06 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2012, 09:55 von snowyrain.)
Hallo,
@muebau: vielen Dank, das war es.
Ich habe das passende hex-file erstellt und beigefügt.
Gruß
Snowyrain
Edit: Das Hex-File hat einen Fehler. Der angelernte Code für die Power-On Funktion schaltet zwar korrekt den Rechner ein, aber genau dieser Code wird nicht korrekt an den PC signalisiert.
Edit2: Ich war leider nicht in der Lage das Lochraster-Layout zu übernehmen, anbei mein Vorschlag. Ich habe mit folgenden Teilen gearbeitet:
b) AVR Type: ATmega8
c) Fuses setzen
d) main.hex flashen
Testen unter Windows:
a) USB_IR_Remote_Receiver_Complete_02012012 laden
b) Die Datei USB_IR_Remote_Receiver.dll in das Verzeichnis \Demo_Source\Releases kopieren
c.1) DLL_Demo ausführen
c.2) load DLL
c.3) InitNative IRData
c.4) Show Settings
c.5) Es sollte "Device Connected" erscheinen
c.6) Es sollten IR-Codes unter "Received IR Code" angezeigt werden (Mit Fernbedinung testen).
(14.08.2012, 16:06)snowyrain link schrieb: ... Edit: Das Hex-File hat einen Fehler. Der angelernte Code für die Power-On Funktion schaltet zwar korrekt den Rechner ein, aber genau dieser Code wird nicht korrekt an den PC signalisiert.
...
Hi Leutz,
ich weiss jetzt nicht ob das Problem schon gelöst ist, hab mich aber mal damit beschäftigt. Meiner Meinung nach wird in der Hauptroutine bei Erkennen des trainierten Codes zwar der Ausgang geschalten, der empfangene Code aber nicht weitergeleitet.
Deswegen hab ich folgendes ergänzt:
#if USE_PowerOnFunction
if ((trained_irmp_data.protocol != 0xFF) & (trained_irmp_data.protocol != 0x00)) // check if code is already trained:
{
// IR code trained,
// if PowerOn function is enabled check it
if (PowerOnEnabled)
{
//compare trained code with last received code
if (memcmp(&irmp_data, &trained_irmp_data, sizeof(irmp_data) - 1) == 0)
{
SWITCH_PORT ^= _BV(SWITCH_BIT); // switch on output pin form ~250ms
while(--i)
{
wdt_reset(); // watchdog reset
usbPoll(); // do a USB poll
_delay_us(500); // delay
}
SWITCH_PORT ^= _BV(SWITCH_BIT); // switch off output pin SendINTData();
}else{ SendINTData(); } // set flag for received new IR code
}else{ SendINTData(); } // set flag for received new IR code
}else{
Bei meinen Tests mit dem "USB IR Remote Receiver" wird der Code nun wieder angezeigt bei den empfangenen Codes. Wer will kann ja das angehängte HEX-File testen. Auf eigene Gefahr natürlich ;D !
Hallo,
ich würde gerne dieses Projekt nachbauen wollen da ich aber nicht so viel erfahrung mit Atmega habe wollte ich ein par Fragen los werden ,
Muss ich bei einen Atmaga8 eine Bootloader und die atmege8.hex + fusebits schreiben ? oder ist der Bootloader in der .hex schon eingebaut ?
Danke
1.VDR PC Technotrend 6400 mit Geforce210 , MSI Board ,Technotrend DVB-T PCI 1600,DVD Brenner ,1TB HDD, EasyVDR
2.VDR Dell P4 3GHz mit Technisat Skystar HD2,Technisat ,Reel eHD
3.VDR Intel P4 Technotrend 2300 s, Technisat DVB
4.VDR MSI Borad mit Athlon , Skystar und DXR3
Hi,
ein Bootloader ist nicht von noeten. Das ist nur Zusatzkram. Die Fuses solltest du entsprechend der Vorgaben flashen damit die Taktquelle und Sonstiges stimmt.
muebau
Standard Digitainer + Wlan Atheros + Nova-S Plus + EasyVDR 0.6.10
TC380 + E35M1-M PRO + Wlan Atheros + Nova-S Plus + EasyVDR 0.9
Mit dieser Firmware (muss ein wenig für den USBasp angepasst werden) wird die MERLIN zu einer normalen HID Tastatur. Selbst das tippen in einem Terminal sollte damit dann möglich sein. Auch ist der von Guenter Bartsch verwendete Ansatz die Merlin zu erkennen deutlich besser als IRMP.
Um es mit einem USBasp verwenden zu können ist lediglich ein kleines Käbelchen an PD3 (INT1) anzulöten und die Source an die neuen Pins (PB0/PB1 USB) anzupassen.
Achtung in
Mit dem Kernel 3.8.2 wurde ein neuer Teiber für Masterkit M901 USB-Radio eingeführt. Das Teil benutzt dich gleiche USB-Vendor und -Device-ID wie der IRMP-Adapter und verhindert somit die Erzeugung des hidraw Devices.
Es gibt 2 Möglichkeiten das Problem zu lösen:
Für USBasp habe ich die USB-Device-ID auf 0x27d9 geändert (gleicher Gerätetyp). Bei der Gelegenheit habe ich IRMP auf die aktuelle SVN Version 2.3.9 und V_USB auf 20121206 aktualisiert. Source gibts hier:
Danke, darauf muß man erstmal kommen... hab den normalen Empfänger von http://www.mikrocontroller.net/topic/171111 und seit heute wurde auf meinem Ubuntu für den einfach kein hidraw-Device mehr erstellt... konnte mir das nur mit dem Update von gestern erklären, weil da der Kernel auch auf 3.2.0-40 upgedatet wurde... und da ist die Änderung auch drin.
10.04.2013, 22:20 (Dieser Beitrag wurde zuletzt bearbeitet: 10.04.2013, 22:34 von MrFX.)
Moin!
Hab jetzt mal die USB-Device-ID wie vorgeschlagen geändert, aber komischerweise wird trotzdem kein hidraw-Device unter /dev erstellt, mit dem vorigen Kernel 3.2.0-39 alles wie bisher. Seltsam...
Edit: jetzt ging's doch, hab nochmal mit 3.2.0-40 gestartet.
Hallo,
ich bin gerade dabei dieses tolle Projekt umzusetzen. Der Ansatz hat mir sofort gefallen.
Nach dem Einspielen der Firmware wurde jedoch der USBasp von meinem PC nicht erkannt. Ein Test auf weiteren 5 Geräten ergab das Spektrum von "nicht erkannt", "falsch erkannt" bis "OK". Ob Linux oder Windows spielte dabei keine Rolle. Einen Hardwarefehler konnte ich ausschließen, da die "fishl" Firmware funktioniert. Nach der Analyse des Quellcodes von "irmpusb" bin ich auf das Problem gestoßen. Am Port PD2 (INT0), welcher auch an der Datenleitung "D+" angeschlossen ist, wird nicht der pull-up Widerstand disabled. Dieses wird aber in der Driver API http://vusb.wikidot.com/driver-api gefordert. Also:
in der main.c die Zeile
PORTD &=~(1<<PD2); /* deactivate pull-up on int0 line */
einfügen und kompilieren.
Code:
void
init_io(void)
{
/* first set all pins to input */
PORTB = 0xFF; /* activate all pull-ups */
DDRB = 0; /* all pins input */
PORTD = 0xFF; /* activate all pull-ups */
PORTD &=~(1<<PD2); /* deactivate pull-up on int0 line */
DDRD = 0; /* all pins input */
/* all inputs except PC0, PC1 */
DDRC = 0x03;
PORTC = 0xfe;
/* USB pins */
USBOUT ^= _BV (USB_CFG_DMINUS_BIT) | _BV (USB_CFG_DPLUS_BIT); /* deactivate pull-ups on USB lines */
#if USE_PowerOnFunction
/* config PowerOn pin */
SWITCH_PORT ^= _BV (SWITCH_BIT); /* deactivate pull-ups on PowerOn pin */
SWITCH_DDR ^= _BV (SWITCH_BIT); /* set switch pin as digital output */
#endif
}
Danach wurde das Modul von jedem PC richtig erkannt.
Vielleicht hilft es anderen Nutzern, die ähnliche Probleme haben.
Für alle, die wie ich noch eine Firmware auf dem AVR haben, deren USB -ID auf 05df lautet:
Das VDR-setup erkennt euren USB-IRMP nicht automatisch. Damit das wieder klappt, müsst ihr in der Datei
eure alte USB ID eintragen: 16c0: 05df
Wer sich nicht sicher ist:
Code:
sudo tail -f /var/log/syslog
ausführen, USB-IRMP anstecken und auf Zeile(n) wie:
Code:
easyVDR kernel: [xxx] usb 2-1.2: new low-speed USB device number x using ehci-pci
easyVDR kernel: [xxx] usb 2-1.2: New USB device found, idVendor=16c0, idProduct=05df
easyVDR kernel: [xxx] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
easyVDR kernel: [xxx] usb 2-1.2: Product: USB IR Remote Receiver
easyVDR kernel: [xxx] usb 2-1.2: Manufacturer: www.AcmeInc.roadrunner.oderso
easyVDR kernel: [xxx] hid-generic 0003:16C0:05DF.0005: hiddevX,hidrawX: USB HID v1.01 Device
achten.
Ein simpler Funktionstest (X = die Ziffer aus obiger syslog-Ausgabe):
Code:
cat /dev/hidrawX
sollte bei einigen Tasten ein paar einzelne Zeichen ergeben, Hauptsache es zappelt was.
Danach sollte vdr-setup den USB-IRMP bei automatischer Empfängersuche erkennen und auswählbar machen
FB "anlernen" via /usr/share/easyvdr/setup/toolmenu/Irmprecord/Irmprecord
Sorry für die Leichenfledderei, aber es gehört halt hier hinzu. schließlich ist obige Bauanleitung inkl realglotzis github nicht das einzige Derivat (aber eines der besseren). Und so können auch die anderen von dem Projekt profitieren.
Funktioniert die Erkennung auch, wenn in der
/usr/share/easyvdr/setup/hw-detect/hw-lib/40_remote_control_receiver
der folgende Block für die 2. HW-Kennung erweitert wird?
10.09.2015, 22:59 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2015, 23:02 von John Bigboteh.)
Leider funktioniert das nicht. Auch nicht, wenn ich (ähnlich Lirc an comX) zwei config-Einträge mache. Entweder taucht dann der USB-IRMP gar nicht in der Liste erkannter Hardware auf oder es wird nicht vollständig konfiguriert bzw irmplircd wird nicht eingerichtet.
Auch müsste jmd in "ir_control" ein Schalter zur Auswahl der PID einbauen. Das wäre super.
Achja: wo lade ich neue FB-Configfiles hoch? für die vielgeliebte/vielgehasste TTS35AI hab ich zwei Files (von der ich drei verschiedene Platinenversionen hier hab - mit jeweils verschiedenen Jumpern ???).
Sorry, für die Mühe, mein Vorschlag oben war nicht ausreichend, melde mich die Tage, wenn ich es am Laufen habe...
Aber wo soll denn jmd in ir_control was für einen Schalter einbauen - verstehe Deinen Wunsch nicht...
FB-Configfiles mit einer Kurzinfo kannst Du in einem Separaten Post in diesem Bereich als Anlage hochladen, dann versuche ich das kurzfristig ins nächste Update mit einzubauen...
Gruß
Michel
Produktiv-VDR:
msi K9N2G-Neo (nvidia 8200 onBoard) mit Athlon X2 4850e mit SamuraiZZ
2xNova-HDS2, DH102
(10.09.2015, 23:37)michel8 link schrieb: Sorry, für die Mühe, mein Vorschlag oben war nicht ausreichend, melde mich die Tage, wenn ich es am Laufen habe...
Kein Problem. mach langsam.
Zitat:Aber wo soll denn jmd in ir_control was für einen Schalter einbauen - verstehe Deinen Wunsch nicht...
Ich dachte in etwa sowas hier:
Code:
ir_control.c:
28 > int opt = 0;
28 + USBDEV_SHARED_PRD = 0x027d9;
< int opt = 0;
59 > case 't':
> break;
59 < case 'u':
+ USBDEV_SHARED_PRD = 0x05df;
< break;
129 > //printf(" -u ven:dev use a different VENDOR:DEVICE id\n");
129 < printf(" -u use old USB DEVICE id 05df\n");
290 > && dev->descriptor.idProduct == USBDEV_SHARED_PRODUCT) {
290 < && dev->descriptor.idProduct == USBDEV_SHARED_PRD) {
Checks bitte nochmal, habs nur schnell mit nem Seitenblick aufm Code notiert.
Zitat:FB-Configfiles mit einer Kurzinfo kannst Du in einem Separaten Post in diesem Bereich als Anlage hochladen, dann versuche ich das kurzfristig ins nächste Update mit einzubauen...
Ja,ok, ich will bei der Gelegenheit gleich alle vorhanden "Geschmacksrichtungen" der TT35AI einsammeln und hochladen.
(10.09.2015, 23:37)michel8 link schrieb: Sorry, für die Mühe, mein Vorschlag oben war nicht ausreichend, melde mich die Tage, wenn ich es am Laufen habe...
Hi John,
wenn Du die Files aus diesem Tar http://www.easy-vdr.de/~michel8/Stable20...ct.tar.bz2
gegen die entsprechenden in
/usr/share/easyvdr/setup/hw-detect
austauschst und dann den FB-Receiver aus dem Setup im Toolmenü neu suchen lässt, müsste der USB IRMP gefunden werden.
FB-Sender auswählen macht danach sicher auch Sinn
Tut die FB dann wie sie soll?
Unabhängig, ob es tut hätte ich gerne die folgenden Files nach der Konfig:
- /lib/udev/rules.d/40-ir-keytable.rules
- /etc/udev/rules.d/01-easyvdr-remote.rules
- auf was zeigt der Link /dev/input/ir-auto_dtc?
Beste Grüße
Michel
(10.09.2015, 23:37)michel8 link schrieb: Aber wo soll denn jmd in ir_control was für einen Schalter einbauen - verstehe Deinen Wunsch nicht...
Wenn das oben klappt, dann ist es sehr leicht verschiedene USB-IDs für eine Empfängervariante anzugeben, ist dann die Änderung an ir_control noch erforderlich?
Und wo steckt diese src - sorry bin nicht so der coder, scripte lieber...
Gruß
Michel
Produktiv-VDR:
msi K9N2G-Neo (nvidia 8200 onBoard) mit Athlon X2 4850e mit SamuraiZZ
2xNova-HDS2, DH102
IR_Control ist zum Konfigurieren des IR Receivers. Also muss IR-Control die USB-ID des Receivers kennen.
Aus Sicht Nutzen/ Aufwand:
Die alte USB_ID sollte man nicht mehr nutzen weil es Konflikte mit anderer HW gibt. Kann mich nicht mehr 100% erinnern was genau das Problem war. Nur dass es recht übel war. Somit sollten die wenigen Receiver* mit der alten ID auf eine neue Firmware geflasht werden. Wer das nicht will sollte sich halt das alte IR-Control raussuchen, oder den Code editieren und kompilieren.
(12.09.2015, 16:55)Martin link schrieb: Und das anlegen des udev Regel ist evtl zu ändern falls hart gecoded
das hat cb damals vorbildlich vorbereitet in der HW-Erkennung.
Ich habe mit der letzten Änderung, die ich für den Test Oben bereitgestellt habe noch folgendes hinzugebaut:
Es werden für alle uns bekannten USB-id's des udev-rules für den irmp angelegt, und der IR, der gefunden wird, wird dann als ir-auto_dtc verlinkt.
Das sollte dann für alle passen, nur dann, wenn mehrere irmp gleichzeitig eingesteckt sind, dann bin ich mir nicht sicher, welcher dann für die Verwendung konfiguriert wird...
muss denn das Tool auf eine feste USB-id abprüfen, oder könnten wir uns da mit an die HW-erkennung und die damit erzeugten rules und links halten?
Gruß
Michel
Produktiv-VDR:
msi K9N2G-Neo (nvidia 8200 onBoard) mit Athlon X2 4850e mit SamuraiZZ
2xNova-HDS2, DH102