Page 1 of 1

rfcmd segt. Missar lampor?

Posted: Fri Mar 17, 2023 9:45 am
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!

Posted: Fri Mar 17, 2023 9:45 am
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 : )

Posted: Fri Mar 17, 2023 9:45 am
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.

Posted: Fri Mar 17, 2023 9:45 am
by tord
Kan du bifoga makefil och felutskrift?

Mvh

Tord

Posted: Fri Mar 17, 2023 9:45 am
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?

Posted: Fri Mar 17, 2023 9:45 am
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.

Posted: Fri Mar 17, 2023 9:45 am
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? :-)

Posted: Fri Mar 17, 2023 9:45 am
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å?

Posted: Fri Mar 17, 2023 9:45 am
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

Posted: Fri Mar 17, 2023 9:45 am
by tord
Verkar som den inte hittar librt, dvs det lib som implementerar semaforerna.

Posted: Fri Mar 17, 2023 9:45 am
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

Posted: Fri Mar 17, 2023 9:45 am
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.

Posted: Fri Mar 17, 2023 9:45 am
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?