USB Serial op Synology DS212j

Met mijn vorige projectje om de P1 poort van de energie meter uit te lezen had ik een goedkope Chinese USB serial dongle gebruikt. (3EUR)  Die kom ik met de juiste driver snel gebruiken op mijn PC.

In mijn geval had de dongle  een VID 0x1a86 & PID 0x7523  (1a86:7523) wat neerkomt op een ch341 chipset van winchiphead. De windows driver is te vinden op hun (Chinese) site http://www.winchiphead.com/download/CH341/CH341SER.ZIP

Echter voor het meten van mijn stroomverbruik wil ik niet de hele tijd een PC hebben draaien. Nou heb ik wel een NAS van Synology DS-212j thuis aanstaan. Hierop draait een Linux kernel.
Normaal gespoken ondersteund de NAS geen USB serial devices maar met de juiste drivers lukt dat wel.

Met behulp van verschillende posts was het duidelijk dat ik de z.g. kernel modules moest maken
Het komt neer op
Voor het maken van de modules heb je een Linux PC nodig, als je die niet zo hebt kan je een van de vele live distributies gebruiken, dan hoef je weinig te installeren en zijn ze snel klaar voor gebruik.


uitpakken van de sources
# tar -xvjf synogpl-1337b-6281.tbz

Uitpakken van de toolchain naar  /usr/local
# tar -zxvf gcc421_glibc25_88f628x.tgz -C /usr/local

Edit Makefile verander de  CROSS_COMPILE variable en evt de ARCH
# vi /home/<userdir>/source/linux-2.6.32/Makefile

CROSS_COMPILE = /usr/local/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
ARCH=arm

Dan de kernel config aanpassen

# cd /home/<userdir>/source/linux-2.6.32/synoconfigs
# cp 88f6281 ../.config
# make ARCH=arm menuconfig

ga naar
Device Drivers ---> USB support ---> USB Serial Converter support ---> USB Winchiphead ch341..
(klik M)

en make om de modules te maken
# make ARCH=arm modules

het resultaat is dan in
/home/<userdir>/source/linux-2.6.32/drivers/usb/serial/

kopieer usbserial.ko en ch341.ko naar de Synology
Dan de modules laden
# insmod usbserial.ko
# insmod ch341.ko

Je kan controleren of het succesvol was
# dmesg
[379727.610000] usbcore: registered new interface driver usbserial
[379727.620000] USB Serial support registered for generic
[379727.630000] usbcore: registered new interface driver usbserial_generic
[379727.640000] usbserial: USB Serial Driver core
[379744.940000] USB Serial support registered for ch341-uart
[379744.940000] ch341 1-1.1:1.0: ch341-uart converter detected
[379744.960000] usb 1-1.1: ch341-uart converter now attached to ttyUSB0
[379745.000000] usbcore: registered new interface driver ch341
DiskStation>

Reacties

  1. Hoi Marcel,

    Ik heb sinds een week 8 zonnepanelen op mijn dak staan met een Mastervolt SX2000, en ben erg benieuwd wat de status is van het systeem, en loop elke keer naar de display om te kijken.
    Ik monitor al enige tijd de kWh meter niet een slimme, en dat doe ik met de Youless en kan dit leuk uitlezen, en gekoppeld aan Bidgely. Nu met de zonnepanelen merk ik dat de Youless geen onderscheid kan maken van terug leveren of niet.

    Nu heb ik een Synology DS1511+ en las ik dat jij al een systeem hebt dat met de synology wordt uitgelezen. Ik zou dit heel graag willen maar ben zelf iemand van de plug en play met een heel klein beetje meer. Zou jij mij kunnen helpen wat ik er voor moet doen om de gegevens uit de Mastervolt SX2000 te halen en vervolgens te zien op de Synology. Ik wil jou daar best een donatie voor geven. Mijn mail adres willem@whvl.nl

    Gr. Willem.

    BeantwoordenVerwijderen
    Reacties
    1. Voor de Mastervolt SX2000 heb je vlg mij een iets andere interface nodig dan voor die mastervolt Soladin 600 die ik heb.

      Ik gebruik 'solget' om de data in te lezen, zover ik begrepen heb zou het ook min of meer voor de Mastervolt SX2000 moeten werken.

      De stappen hierboven moeten ook op de DS1511+ werken

      Verwijderen
  2. Erg interessant, denk dat ik ook maar zo iets ga proberen. Maar ik heb wel een vraag, hoe lees je de gegevens vervolgens in op je Synology? Of worden die automatisch weggeschreven. Dat stuk is me nog onduidelijk hoe nu verder als je de verbinding met de synology eenmaal gelegd hebt.

    BeantwoordenVerwijderen
  3. Marcel,

    Op dit moment heb ik de drivers etc op Synology klaar.
    Ik krijg ook data, maar net als de eerste keer op windows (zonder aanpassingen PuTTY, parity even, en bits 7) is het onleesbaar.

    Ik ben op zoek hoe ik dit op mijn syno doosje aangepast kan krijgen. Hopelijk heb jij een idee.


    BeantwoordenVerwijderen
    Reacties
    1. Hoi Patrick,

      Is het helemaal onleesbaar? In windows zou het goed leesbaar moeten zijn als plain tekst. In Linux zou het minder leesbaar kunnen zijn, ik ben erachter gekomen dat de driver voor deze dongle de 7bit niet helemaal goed werkt. (blijft op 8 bit staan). Ik denk inmiddels te weten wat er aangepast moet worden in de driver, maar ben er nog niet toe gekomen om dit te doen en te testen.

      Het alternatief is om bij het uitlezen dit te corrigeren (inlezen als 8 bit en dan de 'hoogste bit' eraf te halen, dan hou je 7 bit ascii over)

      copy-paste anders eens de output die je krijgt misschien 'herken' ik het.

      Verwijderen
  4. Wat ik heb gedaan is het volgende:
    stty -F /dev/ttyUSB0 evenp

    Nu komt de juiste data er wel uit. Vreemd blijf ik het wel vinden, omdat ik op Windows 7 bits moest doen en op Linux dus niet....

    BeantwoordenVerwijderen
  5. Beste Marcel,

    Ook ik heb een DS212j. Zou de modules die je gemaakt hebt kunnen delen?
    Zijn er ondertussen nog zaken gewijzigd in DSM 4.3? Is het nog steeds benodigd de modules zelf te maken?

    Heb je nog wat instructies hoe ik de meterstanden kan uitlezen?
    Ik heb het reeds werkend met een raspberry, i.c.m. de software minicom en cu.
    Ik zou het nu graag via de NAS laten verwerken.

    BeantwoordenVerwijderen
  6. Voor degene die dit ook willen doen, hier de easyway.
    Installeer deze package via de package manager van de DSM. (ds212j, ARM processor).
    http://www.fischer-net.de/hausautomation/downloads/file/21-usb-driver-kernel-2-6-32-mfr-1-0-syno-88f628x-spk.html

    BeantwoordenVerwijderen
  7. Fischer mist helaas de ch341.ko module.

    Kun je deze beschikbaar stellen ?

    BeantwoordenVerwijderen
  8. Ik heb een Synology @214, een serial to usb kabel.
    Kan iemand me helpen om op deze manier de P! poort van mijn slimme meter uit te lezen?

    BeantwoordenVerwijderen
  9. Daar ben ik ook nieuwsgierig naar!

    BeantwoordenVerwijderen
  10. Ben zelf ook niet zo technisch en lees veel verhalen over arduine, rasp enz maar dit gaat al heel snel heel technisch..
    Heb zelf een ds214Play en zou graag ook de P1 uit willen lezen. Maar kan nergens een stap voor stap handleiding vinden die ik kan gebruiken. Iemand?

    BeantwoordenVerwijderen
  11. Sorry voor de rare inbreuk, maar ik kan bij het soladin verhaal geen vragen stellen (afgesloten?) Heb je misschien nog een aansluitschema en prog beschikbaar voor het uitlezen van 1 soladin systeem? Duizend maal dank.

    BeantwoordenVerwijderen
    Reacties
    1. Hi Rob,
      het basis schema is hier. https://github.com/teding/SolaDin
      Ik heb mijn soladins verkocht. Heb evt nog wel mijn uitlees kastje liggen (mag je tegen kostprijs hebben als dat je helpt)

      Verwijderen
    2. Hi Marcel,
      Het is natuurlijk leuker om het eerst zelf te proberen. Ik heb een nano en een uno + LCD shield liggen maar ben niet zo bedreven in programmeren. Ik begrijp dat aan het soladin program het stukje ontbreekt om de data naar het display te krijgen? Kun je me een hint geven hoe dit in te bouwen in (ik denk) Soladin.h?
      Dank Rob

      Verwijderen
    3. Hoi Marcel,
      Het is gelukt. De programmering zal wel geen schoonheidsprijs verdienen, maar het werkt. Als ik er iemand anders nog een plezier mee kan doen dan hoor ik het wel.

      Verwijderen
    4. Hi Rob, Marcel,
      Ook aan deze kant ligt een Soladin600 te wachten op een 2e leven met een Arduino.
      Ondertussen zit ik al enkele avonden te stoeien om de SolaDin library aan de praat te krijgen.
      Indien mogelijk houd ik me aanbevolen voor de (complete) code!

      Ook bij het gebruik van deze SolaDin lib in andere voorbeelden loop ik vast. Hebben jullie aanpassingen gemaakt aan deze lib?

      (ander voorbeeld waarbij ik het ook niet werkend krijg: https://www.knuterboas.nl/doku.php/soladin_600_monitoring_using_esp8266_and_mqtt)

      Alvast bedankt!

      Verwijderen
    5. Hallo Rob,
      Oei, dat wordt ff zoeken. Ik ben op vakantie dus wordt volgende week. Herinner me als ik nog niets heb laten horen

      Heb evt ook nog mijn oude kastje met Arduino+display van de soladin liggen...

      Verwijderen

Een reactie posten

Populaire posts van deze blog

Onkyo TX-NR656 hacking

P1 port als energiemeter voor SolarEdge omvormer

Energie meter uitlezen via P1 poort