rfcmd segt. Missar lampor?

Moderator: Telldus

Post Reply
Nicke
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

rfcmd segt. Missar lampor?

Post by Nicke »

Hej,

Jag har scriptat så att saker och ting här hemma släcks och tänds vid bestämda tider via rfcmd.
Problemet är att om jag försöker släcka eller tända flera lampor direkt inpå varandra så släcks eller tänds bara vissa lampor.
Jag har även märkt att om man kör tänd och sen släck snabbt efter varandra via SSH så släcks lamporna inte. Man måste vänta ett litet tag innan man försöker igen. Som det är nu så har jag fått sätta schemat så att det släcker och tänder med en minuts mellanrum. Ska det behöva vara så?

Tack på förhand!
tord
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Post by tord »

Prova rfcmd r268 eller senare. Har infört semaforskydd av port för att hantera multipla rfcmd processer så det borde fungera bättre nu : )
Nicke
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

Post by Nicke »

Hej och tack för svar.

Jag ska testa så fort jag får den att byggas för OpenWRT.
Förut kunde jag bygga gamla rfcmd med en modiferad Makefile som jag lekte ihop (jag kan nästan inget om det där). Den nya makefilen har jag modiferat men det är något den inte gillar när den ska kompilera... :)

Jag kompilerar på en Ubuntuserver och flyttar de färdiga körbara filerna till openwrt.
tord
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Post by tord »

Kan du bifoga makefil och felutskrift?

Mvh

Tord
Nicke
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

Post by Nicke »

tord wrote:Kan du bifoga makefil och felutskrift?

Mvh

Tord
Med gamla rfcmd så såg den ut så här:

Code: Select all

FILES = rfcmd

INCLUDEDIR = /home/niklas/open/trunk/build_dir/toolchain-i386_gcc4.1.2/linux-2.6.25.19/include

CFLAGS = -O2 -D__KERNEL__ ${WARN} ${INCLUDE}

CC      := /home/niklas/open/trunk/staging_dir/toolchain-i386_gcc4.1.2/bin/i386-linux-uclibc-gcc

all: $(FILES)

clean:
        rm -f $(FILES) *~ core
rfcmd funkar utmärkt på routern då.
Den har jag själv modifierat.
Jag har ingen aning om vad och hur jag har gjort,
vad det är för kommandon jag har ändrat och varför men det fungerar. :mrgreen:

Den nya filen ser helt annorlunda ut.
Några förslag på hur man kan modifiera den nya makefilen?
tord
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Post by tord »

Prova att kompilera direkt. Exempelvis:

gcc rfcmd.c -lrt -o rfcmd

Byt ut gcc till din korskompilator med hela sökvägen och prova samma sak. Du kan testa vad som kom ut med file-kommandot.
Eftersom detta länkar dynamiskt mot librt måste detta lib finnas på target.
Nicke
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

Post by Nicke »

tord wrote:Prova att kompilera direkt. Exempelvis:

gcc rfcmd.c -lrt -o rfcmd

Byt ut gcc till din korskompilator med hela sökvägen och prova samma sak. Du kan testa vad som kom ut med file-kommandot.
Eftersom detta länkar dynamiskt mot librt måste detta lib finnas på target.
.... jag poängterade väl att jag har noll koll på kompilering? :-)
tord
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Post by tord »

OK, men om du bara testar att ställa dig i samma katalog som rfcmd.c och kopierar följande vid prompten:

/home/niklas/open/trunk/staging_dir/toolchain-i386_gcc4.1.2/bin/i386-linux-uclibc-gcc rfcmd.c -lrt -o rfcmd

Vad får du ut då?
Nicke
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

Post by Nicke »

tord wrote:OK, men om du bara testar att ställa dig i samma katalog som rfcmd.c och kopierar följande vid prompten:

/home/niklas/open/trunk/staging_dir/toolchain-i386_gcc4.1.2/bin/i386-linux-uclibc-gcc rfcmd.c -lrt -o rfcmd

Vad får du ut då?
Då får jag samma som när jag försökte skriva om den nya makefilen:

Code: Select all

/tmp/ccPUYZ97.o: In function `main':
rfcmd.c:(.text+0x335): undefined reference to `sem_open'
rfcmd.c:(.text+0x378): undefined reference to `sem_unlink'
rfcmd.c:(.text+0x390): undefined reference to `sem_wait'
rfcmd.c:(.text+0x3be): undefined reference to `sem_unlink'
rfcmd.c:(.text+0x3cc): undefined reference to `sem_close'
rfcmd.c:(.text+0x485): undefined reference to `sem_post'
rfcmd.c:(.text+0x4b3): undefined reference to `sem_unlink'
rfcmd.c:(.text+0x4c1): undefined reference to `sem_close'
rfcmd.c:(.text+0x5a0): undefined reference to `sem_post'
rfcmd.c:(.text+0x5ce): undefined reference to `sem_unlink'
rfcmd.c:(.text+0x5dc): undefined reference to `sem_close'
rfcmd.c:(.text+0x5f5): undefined reference to `sem_unlink'
rfcmd.c:(.text+0x603): undefined reference to `sem_close'
collect2: ld returned 1 exit status
tord
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Post by tord »

Verkar som den inte hittar librt, dvs det lib som implementerar semaforerna.
Nicke
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

Post by Nicke »

tord wrote:Verkar som den inte hittar librt, dvs det lib som implementerar semaforerna.
Okey. Något förslag på en eventuell lösning?

Detta finns. Vet inte om det säger något:

Code: Select all

trunk/build_dir/linux-brcm-2.4/base-files/ipkg/uclibc/lib/librt.so.0
trunk/build_dir/linux-brcm-2.4/base-files/ipkg/uclibc/lib/librt-0.9.29.so
trunk/build_dir/toolchain-mipsel_gcc3.4.6/uClibc-0.9.29/lib/librt.so.0
trunk/build_dir/toolchain-mipsel_gcc3.4.6/uClibc-0.9.29/lib/librt.so
trunk/build_dir/toolchain-mipsel_gcc3.4.6/uClibc-0.9.29/lib/librt-0.9.29.so
trunk/build_dir/toolchain-mipsel_gcc3.4.6/uClibc-0.9.29/lib/librt.a
trunk/build_dir/toolchain-mipsel_gcc3.4.6/uClibc-0.9.29/librt
trunk/build_dir/mipsel/root-brcm-2.4/lib/librt.so.0
trunk/build_dir/mipsel/root-brcm-2.4/lib/librt-0.9.29.so
trunk/build_dir/mipsel/OpenWrt-SDK-brcm-2.4-for-Linux-i686/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt.so.0
trunk/build_dir/mipsel/OpenWrt-SDK-brcm-2.4-for-Linux-i686/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt.so
trunk/build_dir/mipsel/OpenWrt-SDK-brcm-2.4-for-Linux-i686/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt-0.9.29.so
trunk/build_dir/mipsel/OpenWrt-SDK-brcm-2.4-for-Linux-i686/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt_pic.a
trunk/build_dir/mipsel/OpenWrt-SDK-brcm-2.4-for-Linux-i686/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt.a
trunk/build_dir/linux-x86_generic/base-files/ipkg/uclibc/lib/librt.so.0
trunk/build_dir/linux-x86_generic/base-files/ipkg/uclibc/lib/librt-0.9.29.so
trunk/build_dir/toolchain-i386_gcc4.1.2/uClibc-0.9.29/lib/librt.so.0
trunk/build_dir/toolchain-i386_gcc4.1.2/uClibc-0.9.29/lib/librt.so
trunk/build_dir/toolchain-i386_gcc4.1.2/uClibc-0.9.29/lib/librt-0.9.29.so
trunk/build_dir/toolchain-i386_gcc4.1.2/uClibc-0.9.29/lib/librt.a
trunk/build_dir/toolchain-i386_gcc4.1.2/uClibc-0.9.29/librt
trunk/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt.so.0
trunk/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt.so
trunk/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt-0.9.29.so
trunk/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt_pic.a
trunk/staging_dir/toolchain-mipsel_gcc3.4.6/lib/librt.a
trunk/staging_dir/toolchain-i386_gcc4.1.2/lib/librt.so.0
trunk/staging_dir/toolchain-i386_gcc4.1.2/lib/librt.so
trunk/staging_dir/toolchain-i386_gcc4.1.2/lib/librt-0.9.29.so
trunk/staging_dir/toolchain-i386_gcc4.1.2/lib/librt_pic.a
trunk/staging_dir/toolchain-i386_gcc4.1.2/lib/librt.a
svanstrom
Posts: 1
Joined: Fri Mar 17, 2023 9:45 am

Post by svanstrom »

Nicke wrote:
tord wrote:Verkar som den inte hittar librt, dvs det lib som implementerar semaforerna.
Okey. Något förslag på en eventuell lösning?
Editera Makefile och lägg till -lrt som ytterligare en LIBS-flagga för att länka in librt:

LIBS= -lftdi -lusb -lrt

Tellsticken är en underbar produkt och rfcmd är ett grymt kommando men fyfan så dålig dokumentationen och installationsbeskrivningarna är, om man inte är kompileringskung av Guds nåde.

Tur att Google finns, annars hade jag fått tuppjuck.
Nicke
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

Post by Nicke »

svanstrom wrote:
Nicke wrote:
tord wrote:Verkar som den inte hittar librt, dvs det lib som implementerar semaforerna.
Okey. Något förslag på en eventuell lösning?
Editera Makefile och lägg till -lrt som ytterligare en LIBS-flagga för att länka in librt:

LIBS= -lftdi -lusb -lrt

Tellsticken är en underbar produkt och rfcmd är ett grymt kommando men fyfan så dålig dokumentationen och installationsbeskrivningarna är, om man inte är kompileringskung av Guds nåde.

Tur att Google finns, annars hade jag fått tuppjuck.
För vilket system har du kompilerat?
Post Reply