Tinkerforge

Status
Für weitere Antworten geschlossen.

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Letzte Woche kam ein bissel Spielzeug von TinkerForge, was ich natürlich auch an der DS ausprobieren musste. Der Brick Daemon läuft auch auf meiner DS1010, so dass man diese für die Steuerung verwenden kann.

Hier die notwendigen Schritte.

IPKG
Um den Compiler und Co auf die DS zu bekommen. Alternativ könnte man auch auf einer anderen Maschine crosskompilieren. Ich denke, dass nur "gcc" und "make" nötig sind (aber da ich einiges mehr installiert habe, ist eventuell doch mehr nötig).

libusb
Die auf der DS ist (wie üblich) steinalt (IPKG hat auch nichts wirklich neueres) und daher müssen wir eine aktuelle Version bauen. Die ganz aktuellen 1.0er verwenden udev, was es auch wieder nicht auf der DS gibt, daher eine etwas ältere (1.0.9).
Rich (BBCode):
wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2/download
tar xzf libusb-1.0.9.tar.bz2
cd libusb-1.0.9/
./configure --prefix=/opt
make
make install

brickd
  • Den Quelltext auf die DS herunterladen und entpacken.
  • In src/brickd/utils.c die Zeile 198 (ERFKILL) entfernen (zu alter Kernel, der kennt das nicht).
  • In src/brickd/Makefile in Zeile 16 das "check" zu "no" ändern.
Rich (BBCode):
cd src/brickd/
export CFLAGS=-I/opt/include/libusb-1.0/
export LIBS=/opt/lib/libusb-1.0.so.0
make
cp brickd /opt/bin/
cd ../build_data/linux/etc/
cp brickd.conf /etc/

Master-Brick via USB anschließen und den Daemon mit "brickd" starten. Wenn alles klappt, dann schreibt er "Added USB device (bus: ..., device: ...) at index ...: Master Brick ...". Man kann sich dann mit dem Brick Viewer auf die DS verbinden. Der Port kann bei Bedarf in /etc/brickd.conf angepasst werden. Aufgrund des fehlenden udev ist kein Hot-Plug möglich, der Daemon muss also nach Anschluss der Hardware (neu) gestartet werden.

Die PHP-Demos laufen auf der DS (hab die Wetterstation probiert). open_basedir anpassen und die Libs für die Bindings einfach mit bei der Anwendung reinpacken.
 

P4ddy

Benutzer
Mitglied seit
26. Okt 2009
Beiträge
461
Punkte für Reaktionen
1
Punkte
16
Hallo Mertos,

das klingt wirklich interessant, auch ich nutze Tinkerforge und hatte überlegt TF über die DS zu steuern.

Ich bin nun nicht so der Crack wie du, daher habe ich mich damit nie weiter befasst.
Könntest du noch eine anleitung machen, wie genau die PHP-Demos lauffähig gemacht wurden auf der DS?

Gibts wohl ne möglichkeit so etwas wie den BrickDeamon als Packet fertig zu machen?

Ich habe bei mir kein IPKG installiert- muss ich vorher noch irgendetwas machen bevor ich die libusb installiere oder einfach bei der Stelle mit dem wget" einsteigen?

Wäre super wenn du mir bisschen unter die Arme greifen könntest :eek:

Danke und Gruß
Patrick
ps: möchtest du vll. einen Eintrag im Wiki erstellen?
 

MoritzDorn

Benutzer
Mitglied seit
12. Dez 2007
Beiträge
273
Punkte für Reaktionen
0
Punkte
0
Hallo,

wäre super wenn es da als fertiges Paket gibt.
Ich nutze auch die DS und die PHP-Skripte zur Steuerung/Auswertung, habe mir die Ethernet Extension gegönnt und über USB bekommt das ganze die Power über die NAS.

Wenn das ganze auf der DS laufen würde könnte man sich die Ethernet Extension natürlich sparen.

Gruß
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Könntest du noch eine anleitung machen, wie genau die PHP-Demos lauffähig gemacht wurden auf der DS?

Irgendwo einen Ordner anlegen und die PHP der Anwendung reinkopieren. Einen Unterordner "Tinkerforge" anlegen und dort die PHP-Bindings reinpacken. Im DSM unter Webdienste bei PHP open_basedir das Verzeichnis mit anhängen.
In der Konsole in das Verzeichnis wechseln und mit "php DATEI_DER_ANWENDUNG" starten.

Ich habe bei mir kein IPKG installiert- muss ich vorher noch irgendetwas machen bevor ich die libusb installiere oder einfach bei der Stelle mit dem wget" einsteigen?
Ja, IPKG damit dann die notwendigen Packages installieren.
 

Berndi

Benutzer
Mitglied seit
30. Sep 2009
Beiträge
183
Punkte für Reaktionen
4
Punkte
18
So, ich will das Thema aus aktuellem Anlass noch einmal hervor holen.

Ich würde gerne obiges Szenario auf meiner DS214+ (DSM5.2) durchführen.

Ich habe bereits IPGK drauf und darüber GCC und MAKE installiert.

Als erstes hatte ich das Problem, dass
Code:
wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2/download
Das Paket nicht ordentlich herunter geladen hat.
Das war aber leicht zu beheben. :)

Jetzt geschieht aber folgendes:
Code:
DiskStation> cd /volume2/Zwischenablage/libusb-1.0.9/
DiskStation> ./configure --prefix=/opt
checking for a BSD-compatible install... ./install-sh -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/volume2/Zwischenablage/libusb-1.0.9':
configure: error: C compiler cannot create executables
See `config.log' for more details
In der config.log steht dann das hier:

Code:
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by libusb configure 1.0.9, which was
generated by GNU Autoconf 2.68.  Invocation command line was

  $ ./configure --prefix=/opt

## --------- ##
## Platform. ##
## --------- ##

hostname = DiskStation
uname -m = armv7l
uname -r = 3.2.40
uname -s = Linux
uname -v = #5644 SMP Wed Oct 28 12:36:51 CST 2015

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /sbin
PATH: /bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /usr/syno/sbin
PATH: /usr/syno/bin
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /var/packages/JavaManager/target/Java/bin
PATH: /var/packages/JavaManager/target/Java/jre/bin
PATH: /opt/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2370: checking for a BSD-compatible install
configure:2438: result: ./install-sh -c
configure:2449: checking whether build environment is sane
configure:2499: result: yes
configure:2640: checking for a thread-safe mkdir -p
configure:2679: result: ./install-sh -c -d
configure:2692: checking for gawk
configure:2722: result: no
configure:2692: checking for mawk
configure:2722: result: no
configure:2692: checking for nawk
configure:2722: result: no
configure:2692: checking for awk
configure:2708: found /usr/bin/awk
configure:2719: result: awk
configure:2730: checking whether make sets $(MAKE)
configure:2752: result: yes
configure:2833: checking whether to enable maintainer-specific portions of Makefiles
configure:2842: result: no
configure:2922: checking for gcc
configure:2938: found /opt/bin/gcc
configure:2949: result: gcc
configure:3178: checking for C compiler version
configure:3187: gcc --version >&5
gcc (GCC) 4.2.3
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:3198: $? = 0
configure:3187: gcc -v >&5
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: ../gcc-4.2/configure --build=i386-pc-linux-gnu --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --prefix=/opt --disable-nls --disable-static --with-as=/home/slug/optware/cs08q1armel/toolchain/arm-2008q1/bin/arm-none-linux-gnueabi-as --with-ld=/home/slug/optware/cs08q1armel/toolchain/arm-2008q1/bin/arm-none-linux-gnueabi-ld --enable-languages=c,c++ --disable-multilib --enable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --enable-shared --enable-symvers=gnu --enable-__cxa_atexit
Thread model: posix
gcc version 4.2.3
configure:3198: $? = 0
configure:3187: gcc -V >&5
gcc: '-V' option must have argument
configure:3198: $? = 1
configure:3187: gcc -qversion >&5
gcc: unrecognized option '-qversion'
gcc: no input files
configure:3198: $? = 1
configure:3218: checking whether the C compiler works
configure:3240: gcc    conftest.c  >&5
/volume2/@optware/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/bin/ld: ERROR: /lib/libc.so.6 uses VFP register arguments, a.out does not
/volume2/@optware/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/bin/ld: failed to merge target specific data of file /lib/libc.so.6
collect2: ld returned 1 exit status
configure:3244: $? = 1
configure:3282: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "libusb"
| #define PACKAGE_TARNAME "libusb"
| #define PACKAGE_VERSION "1.0.9"
| #define PACKAGE_STRING "libusb 1.0.9"
| #define PACKAGE_BUGREPORT "libusb-devel@lists.sourceforge.net"
| #define PACKAGE_URL "http://www.libusb.org/"
| #define PACKAGE "libusb"
| #define VERSION "1.0.9"
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:3287: error: in `/volume2/Zwischenablage/libusb-1.0.9':
configure:3290: error: C compiler cannot create executables
See `config.log' for more details

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_env_CC_set=''
ac_cv_env_CC_value=''
ac_cv_env_CFLAGS_set=''
ac_cv_env_CFLAGS_value=''
ac_cv_env_CPPFLAGS_set=''
ac_cv_env_CPPFLAGS_value=''
ac_cv_env_CPP_set=''
ac_cv_env_CPP_value=''
ac_cv_env_LDFLAGS_set=''
ac_cv_env_LDFLAGS_value=''
ac_cv_env_LIBS_set=''
ac_cv_env_LIBS_value=''
ac_cv_env_build_alias_set=''
ac_cv_env_build_alias_value=''
ac_cv_env_host_alias_set=''
ac_cv_env_host_alias_value=''
ac_cv_env_target_alias_set=''
ac_cv_env_target_alias_value=''
ac_cv_prog_AWK='awk'
ac_cv_prog_ac_ct_CC='gcc'
ac_cv_prog_make_make_set='yes'

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /volume2/Zwischenablage/libusb-1.0.9/missing --run aclocal-1.11'
AMDEPBACKSLASH=''
AMDEP_FALSE=''
AMDEP_TRUE=''
AMTAR='${SHELL} /volume2/Zwischenablage/libusb-1.0.9/missing --run tar'
AM_BACKSLASH='\'
AM_CFLAGS=''
AM_DEFAULT_VERBOSITY='0'
AR=''
AUTOCONF='${SHELL} /volume2/Zwischenablage/libusb-1.0.9/missing --run autoconf'
AUTOHEADER='${SHELL} /volume2/Zwischenablage/libusb-1.0.9/missing --run autoheader'
AUTOMAKE='${SHELL} /volume2/Zwischenablage/libusb-1.0.9/missing --run automake-1.11'
AWK='awk'
BUILD_EXAMPLES_FALSE=''
BUILD_EXAMPLES_TRUE=''
CC='gcc'
CCDEPMODE=''
CFLAGS=''
CPP=''
CPPFLAGS=''
CYGPATH_W='echo'
DEFS=''
DEPDIR=''
DSYMUTIL=''
DUMPBIN=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
FGREP=''
GREP=''
HAVE_SIGACTION_FALSE=''
HAVE_SIGACTION_TRUE=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
LD=''
LDFLAGS=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LIPO=''
LN_S=''
LTLDFLAGS='-version-info 1:0:1'
LTLIBOBJS=''
MAINT='#'
MAINTAINER_MODE_FALSE=''
MAINTAINER_MODE_TRUE='#'
MAKEINFO='${SHELL} /volume2/Zwischenablage/libusb-1.0.9/missing --run makeinfo'
MKDIR_P='./install-sh -c -d'
NM=''
NMEDIT=''
OBJDUMP=''
OBJEXT=''
OS_DARWIN=''
OS_DARWIN_FALSE=''
OS_DARWIN_TRUE=''
OS_LINUX=''
OS_LINUX_FALSE=''
OS_LINUX_TRUE=''
OS_OPENBSD=''
OS_OPENBSD_FALSE=''
OS_OPENBSD_TRUE=''
OS_WINDOWS=''
OS_WINDOWS_FALSE=''
OS_WINDOWS_TRUE=''
OTOOL64=''
OTOOL=''
PACKAGE='libusb'
PACKAGE_BUGREPORT='libusb-devel@lists.sourceforge.net'
PACKAGE_NAME='libusb'
PACKAGE_STRING='libusb 1.0.9'
PACKAGE_TARNAME='libusb'
PACKAGE_URL='http://www.libusb.org/'
PACKAGE_VERSION='1.0.9'
PATH_SEPARATOR=':'
PC_LIBS_PRIVATE=''
RANLIB=''
RC=''
SED=''
SET_MAKE=''
SHELL='/bin/ash'
STRIP=''
THREADS_POSIX_FALSE=''
THREADS_POSIX_TRUE=''
THREAD_CFLAGS=''
VERSION='1.0.9'
VISIBILITY_CFLAGS=''
ac_ct_CC='gcc'
ac_ct_DUMPBIN=''
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE=''
am__include=''
am__isrc=''
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
bindir='${exec_prefix}/bin'
build=''
build_alias=''
build_cpu=''
build_os=''
build_vendor=''
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='NONE'
host=''
host_alias=''
host_cpu=''
host_os=''
host_vendor=''
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /volume2/Zwischenablage/libusb-1.0.9/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='$(top_builddir)/./install-sh -c -d'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/opt'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "libusb"
#define PACKAGE_TARNAME "libusb"
#define PACKAGE_VERSION "1.0.9"
#define PACKAGE_STRING "libusb 1.0.9"
#define PACKAGE_BUGREPORT "libusb-devel@lists.sourceforge.net"
#define PACKAGE_URL "http://www.libusb.org/"
#define PACKAGE "libusb"
#define VERSION "1.0.9"

configure: exit 77

Was mache ich falsch?
 

Berndi

Benutzer
Mitglied seit
30. Sep 2009
Beiträge
183
Punkte für Reaktionen
4
Punkte
18
Habe jetzt mal ein einfaches Standard-"Hello World" in die Datei test.c geschrieben und sie in der Konsole versucht zu kompilieren.

Hier das Ergebnis:
Code:
/volume2/Zwischenablage # gcc test.c -o test
test.c:6:2: warning: no newline at end of file
/volume2/@optware/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/bin/ld: ERROR: /lib/libc.so.6 uses VFP register arguments, test does not
/volume2/@optware/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/bin/ld: failed to merge target specific data of file /lib/libc.so.6
collect2: ld returned 1 exit status

Hier scheint ein grundsätzliches Problem mit dem GCC-Compiler vorzuliegen.
Habe ihn per IPKG installiert.

Irgendwelche Ideen?

Gruß,
Berndi
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat