Temat: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Ostatnio zainteresowałem się pakietem ipp-usb (https://github.com/OpenPrinting/ipp-usb), przetestowałem na RPI, działa Airprint na mojej drukarce HP (drukarka bez wifi, tylko usb) i postanowiłem skompilować go na openwrt. Dla debiana kompilacja jest banalna wiec myślałem że i na openwrt sie uda bez problemu...

Przyznaje że jestem w tym zielony, coś tam programuje(pod weba) ale z C i GO nigdy nie miałem do czynienia.

Udało się skompilować środowisko i wstępnie utworzyć Makefile.

Stworzyłem swoje repo na github: https://github.com/kkraszy/ipp-usb-openwrt

Mój Makefile:

include $(TOPDIR)/rules.mk
PKG_NAME:=ipp-usb
PKG_VERSION:=0.9.23
PKG_RELEASE:=1
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_DIR:=$(BUILD_DIR)/ipp-usb
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/golang/golang-values.mk
MAKE_VARS = \
GOARCH=$(GO_ARCH)

define Package/ipp-usb
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=ipp-usb
  PKGARCH:=all
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Package/ipp-usb/description
ipp-usb
endef

define Package/ipp-usb/install
    $(INSTALL_DIR) $(1)/usr/bin/
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/ipp-usb $(1)/usr/bin/ipp-usb
    $(CP) ./files/* $(1)/
    $(CP) $(PKG_BUILD_DIR)/etc/ipp/ipp-usb.conf $(1)/etc/config/ipp-usb
endef

$(eval $(call BuildPackage,ipp-usb))

Aktualny problem to chyba brak zależności, chciaż wydaje mi się że wszystko doinstalowałem w menuconig

ebian@ns3021243:~/openwrt2$ make package/ipp-usb/compile -j1 V=s
make[2]: Entering directory '/home/debian/openwrt2/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/home/debian/openwrt2/scripts/config'
WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!
make[1]: Entering directory '/home/debian/openwrt2'
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/lang/golang/golang'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/lang/golang/golang'
time: package/feeds/packages/golang/host-compile#0.41#0.11#0.43
make[2]: Entering directory '/home/debian/openwrt2/package/libs/toolchain'
echo "libc" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
echo "libgcc" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
echo "libpthread" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
make[2]: Leaving directory '/home/debian/openwrt2/package/libs/toolchain'
time: package/libs/toolchain/compile#0.12#0.04#0.15
make[2]: Entering directory '/home/debian/openwrt2/package/ipp-usb'
make[2]: Nothing to be done for 'compile'.
make[2]: Leaving directory '/home/debian/openwrt2/package/ipp-usb'
time: package/ipp-usb/compile#0.66#0.05#0.70
make[1]: Leaving directory '/home/debian/openwrt2'

Na githubie komuś już udało sie to zrobić ale niestety podał niewiele szczegółów. Pisał żeby nadpisać  CGO CFLAGS i CGO LDFLAGS, aby wskazywały katalog OpenWRT Target i lib. Niestety nie za bardzo wiem jak mam to zrobić.

@Cezary masz jakiś pomysł?

2

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Nie zaznaczyłeś pakietu w konfigu. Zrób make menuconfig i go najpierw zaznacz przed kompilacją.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Poszło do przodu, ale teraz mam:

debian@ns3021243:~/openwrt2$ make package/ipp-usb/compile -j1 V=s
make[2]: Entering directory '/home/debian/openwrt2/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/home/debian/openwrt2/scripts/config'
time: target/linux/prereq#0.20#0.04#0.23
make[1]: Entering directory '/home/debian/openwrt2'
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/lang/golang/golang'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/lang/golang/golang'
time: package/feeds/packages/golang/host-compile#0.37#0.13#0.41
make[2]: Entering directory '/home/debian/openwrt2/package/libs/toolchain'
echo "libc" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
echo "libgcc" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
echo "libpthread" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
make[2]: Leaving directory '/home/debian/openwrt2/package/libs/toolchain'
time: package/libs/toolchain/compile#0.13#0.04#0.16
make[2]: Entering directory '/home/debian/openwrt2/package/ipp-usb'
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.prepared_cb4bcc003881527de110a6af5c1d3959_6664517399ebbbc92a37c5bb081b5c53_check
mkdir -p /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb
cp -fpR ./src/* /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.prepared_cb4bcc003881527de110a6af5c1d3959_6664517399ebbbc92a37c5bb081b5c53
rm -f /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.configured_*
rm -f /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.ipp-usb_installed
(cd /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/./; if [ -x ./configure ]; then find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.guess | xargs -r chmod u+w; find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.guess | xargs -r -n1 cp --remove-destination /home/debian/openwrt2/scripts/config.guess; find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.sub | xargs -r chmod u+w; find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.sub | xargs -r -n1 cp --remove-destination /home/debian/openwrt2/scripts/config.sub; AR="arm-openwrt-linux-muslgnueabi-gcc-ar" AS="arm-openwrt-linux-muslgnueabi-gcc -c -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD=arm-openwrt-linux-muslgnueabi-ld NM="arm-openwrt-linux-muslgnueabi-gcc-nm" CC="arm-openwrt-linux-muslgnueabi-gcc" GCC="arm-openwrt-linux-muslgnueabi-gcc" CXX="arm-openwrt-linux-muslgnueabi-g++" RANLIB="arm-openwrt-linux-muslgnueabi-gcc-ranlib" STRIP=arm-openwrt-linux-muslgnueabi-strip OBJCOPY=arm-openwrt-linux-muslgnueabi-objcopy OBJDUMP=arm-openwrt-linux-muslgnueabi-objdump SIZE=arm-openwrt-linux-muslgnueabi-size CFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro " CXXFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro " CPPFLAGS="-I/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/usr/include -I/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/include/fortify -I/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/include " LDFLAGS="-L/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/usr/lib -L/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/lib -znow -zrelro "   ./configure --target=arm-openwrt-linux --host=arm-openwrt-linux --build=x86_64-pc-linux-gnu --program-prefix="" --program-suffix="" --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls  ; fi; )
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.configured_68b329da9893e34099c7d8ad5cb9c940
rm -f /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.built
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.built_check
GOARCH=arm make -j1 -C /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/. AR="arm-openwrt-linux-muslgnueabi-gcc-ar" AS="arm-openwrt-linux-muslgnueabi-gcc -c -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD=arm-openwrt-linux-muslgnueabi-ld NM="arm-openwrt-linux-muslgnueabi-gcc-nm" CC="arm-openwrt-linux-muslgnueabi-gcc" GCC="arm-openwrt-linux-muslgnueabi-gcc" CXX="arm-openwrt-linux-muslgnueabi-g++" RANLIB="arm-openwrt-linux-muslgnueabi-gcc-ranlib" STRIP=arm-openwrt-linux-muslgnueabi-strip OBJCOPY=arm-openwrt-linux-muslgnueabi-objcopy OBJDUMP=arm-openwrt-linux-muslgnueabi-objdump SIZE=arm-openwrt-linux-muslgnueabi-size CROSS="arm-openwrt-linux-muslgnueabi-" ARCH="arm" ;
make[3]: Entering directory '/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb'
gotags -R . > tags
/bin/sh: 1: gotags: not found
make[3]: [Makefile:12: all] Error 127 (ignored)
go build -ldflags "-s -w" -tags nethttpomithttp2
go: downloading github.com/OpenPrinting/goipp v1.0.0
# github.com/OpenPrinting/ipp-usb
./usbtransport.go:32:16: undefined: UsbDevHandle
./usbtransport.go:571:17: undefined: UsbInterface
./dnssd.go:130:12: undefined: dnssdSysdep
./dnssd.go:187:21: undefined: newDnssdSysdep
./dnssd.go:292:23: undefined: newDnssdSysdep
./auth.go:228:6: undefined: TCPClientUIDSupported
./auth.go:229:15: undefined: TCPClientUID
./logger.go:144:5: undefined: logIsAtty
./logger.go:145:15: undefined: logColorConsoleWrite
./main.go:204:9: undefined: UsbInit
./main.go:204:9: too many errors
make[3]: *** [Makefile:13: all] Error 2
make[3]: Leaving directory '/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb'
make[2]: *** [Makefile:38: /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.built] Error 2
make[2]: Leaving directory '/home/debian/openwrt2/package/ipp-usb'
time: package/ipp-usb/compile#29.11#2.41#7.22
    ERROR: package/ipp-usb failed to build.
make[1]: *** [package/Makefile:116: package/ipp-usb/compile] Error 1
make[1]: Leaving directory '/home/debian/openwrt2'
make: *** [/home/debian/openwrt2/include/toplevel.mk:230: package/ipp-usb/compile] Error 2

4

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Podobny błąd ktoś miał tutaj i go rozwiązał:

https://github.com/OpenPrinting/ipp-usb/issues/24

5

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

/bin/sh: 1: gotags: not found

itd. Lecisz po kolei ze wszystkim co się pojawi.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Pozbyłem się tego gotags - wydaje mi się że nie było to konieczne.

Teraz jest raczej problem z dostarczeniem zależność do kompilatora GO.
Dodałem zależnośc ( DEPENDS:=+libusb-1.0 +libavahi-client +libavahi-compat-libdnssd ) do Makefile ale nie wiele to dało.

debian@ns3021243:~/openwrt2$ make package/ipp-usb/compile -j1 V=s
Collecting package info: done
make[2]: Entering directory '/home/debian/openwrt2/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/home/debian/openwrt2/scripts/config'
make[1]: Entering directory '/home/debian/openwrt2'
make[2]: Entering directory '/home/debian/openwrt2/package/libs/toolchain'
echo "libc" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
echo "libgcc" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
echo "libpthread" >> /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/pkginfo/toolchain.default.install
make[2]: Leaving directory '/home/debian/openwrt2/package/libs/toolchain'
time: package/libs/toolchain/compile#0.14#0.03#0.16
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/libs/expat'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/libs/expat'
time: package/feeds/packages/expat/compile#0.16#0.04#0.18
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/utils/dbus'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/utils/dbus'
time: package/feeds/packages/dbus/compile#0.29#0.05#0.32
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/libs/gdbm'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/libs/gdbm'
time: package/feeds/packages/gdbm/compile#0.23#0.06#0.27
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/libs/libdaemon'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/libs/libdaemon'
time: package/feeds/packages/libdaemon/compile#0.18#0.02#0.18
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
time: package/feeds/packages/avahi/dbus/compile#0.16#0.04#0.18
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
time: package/feeds/packages/avahi/dbus/compile#0.15#0.04#0.18
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
time: package/feeds/packages/avahi/dbus/compile#0.14#0.04#0.16
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/libs/avahi'
time: package/feeds/packages/avahi/dbus/compile#0.15#0.04#0.17
make[2]: Entering directory '/home/debian/openwrt2/feeds/packages/lang/golang/golang'
make[2]: Leaving directory '/home/debian/openwrt2/feeds/packages/lang/golang/golang'
time: package/feeds/packages/golang/host-compile#0.37#0.12#0.41
make[2]: Entering directory '/home/debian/openwrt2/package/libs/libusb'
make[2]: Leaving directory '/home/debian/openwrt2/package/libs/libusb'
time: package/libs/libusb/compile#0.39#0.08#0.45
make[2]: Entering directory '/home/debian/openwrt2/package/ipp-usb'
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.prepared_f2e303acdf54c4fa809c8c1513380390_6664517399ebbbc92a37c5bb081b5c53_check
mkdir -p /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb
cp -fpR ./src/* /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.prepared_f2e303acdf54c4fa809c8c1513380390_6664517399ebbbc92a37c5bb081b5c53
rm -f /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.configured_*
rm -f /home/debian/openwrt2/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/stamp/.ipp-usb_installed
(cd /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/./; if [ -x ./configure ]; then find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.guess | xargs -r chmod u+w; find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.guess | xargs -r -n1 cp --remove-destination /home/debian/openwrt2/scripts/config.guess; find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.sub | xargs -r chmod u+w; find /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/ -name config.sub | xargs -r -n1 cp --remove-destination /home/debian/openwrt2/scripts/config.sub; AR="arm-openwrt-linux-muslgnueabi-gcc-ar" AS="arm-openwrt-linux-muslgnueabi-gcc -c -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD=arm-openwrt-linux-muslgnueabi-ld NM="arm-openwrt-linux-muslgnueabi-gcc-nm" CC="arm-openwrt-linux-muslgnueabi-gcc" GCC="arm-openwrt-linux-muslgnueabi-gcc" CXX="arm-openwrt-linux-muslgnueabi-g++" RANLIB="arm-openwrt-linux-muslgnueabi-gcc-ranlib" STRIP=arm-openwrt-linux-muslgnueabi-strip OBJCOPY=arm-openwrt-linux-muslgnueabi-objcopy OBJDUMP=arm-openwrt-linux-muslgnueabi-objdump SIZE=arm-openwrt-linux-muslgnueabi-size CFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro " CXXFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro " CPPFLAGS="-I/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/usr/include -I/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/include/fortify -I/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/include " LDFLAGS="-L/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/usr/lib -L/home/debian/openwrt2/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-11.2.0_musl_eabi/lib -znow -zrelro "   ./configure --target=arm-openwrt-linux --host=arm-openwrt-linux --build=x86_64-pc-linux-gnu --program-prefix="" --program-suffix="" --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls  ; fi; )
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.configured_68b329da9893e34099c7d8ad5cb9c940
rm -f /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.built
touch /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.built_check
GOARCH=arm make -j1 -C /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/. AR="arm-openwrt-linux-muslgnueabi-gcc-ar" AS="arm-openwrt-linux-muslgnueabi-gcc -c -Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -fmacro-prefix-map=/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb=ipp-usb -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro" LD=arm-openwrt-linux-muslgnueabi-ld NM="arm-openwrt-linux-muslgnueabi-gcc-nm" CC="arm-openwrt-linux-muslgnueabi-gcc" GCC="arm-openwrt-linux-muslgnueabi-gcc" CXX="arm-openwrt-linux-muslgnueabi-g++" RANLIB="arm-openwrt-linux-muslgnueabi-gcc-ranlib" STRIP=arm-openwrt-linux-muslgnueabi-strip OBJCOPY=arm-openwrt-linux-muslgnueabi-objcopy OBJDUMP=arm-openwrt-linux-muslgnueabi-objdump SIZE=arm-openwrt-linux-muslgnueabi-size CROSS="arm-openwrt-linux-muslgnueabi-" ARCH="arm" ;
make[3]: Entering directory '/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb'
go build
# github.com/OpenPrinting/ipp-usb
./usbtransport.go:32:16: undefined: UsbDevHandle
./usbtransport.go:571:17: undefined: UsbInterface
./dnssd.go:130:12: undefined: dnssdSysdep
./dnssd.go:187:21: undefined: newDnssdSysdep
./dnssd.go:292:23: undefined: newDnssdSysdep
./auth.go:228:6: undefined: TCPClientUIDSupported
./auth.go:229:15: undefined: TCPClientUID
./logger.go:144:5: undefined: logIsAtty
./logger.go:145:15: undefined: logColorConsoleWrite
./main.go:204:9: undefined: UsbInit
./main.go:204:9: too many errors
make[3]: *** [Makefile:12: all] Error 2
make[3]: Leaving directory '/home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb'
make[2]: *** [Makefile:39: /home/debian/openwrt2/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/ipp-usb/.built] Error 2
make[2]: Leaving directory '/home/debian/openwrt2/package/ipp-usb'
time: package/ipp-usb/compile#0.93#0.22#0.89
    ERROR: package/ipp-usb failed to build.
make[1]: *** [package/Makefile:116: package/ipp-usb/compile] Error 1
make[1]: Leaving directory '/home/debian/openwrt2'
make: *** [/home/debian/openwrt2/include/toplevel.mk:230: package/ipp-usb/compile] Error 2

7

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

adguardhome jest w golangu. Zobacz jego makefile co tam jest includowane i jak jest go wołany.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Niby udało się skompilować ale sama binarka nie działa na routerze.

root@OpenWrt:~# sh ipp-usb 
ipp-usb: line 1: ELF�0?@@�0r@8: not found
ipp-usb: line 4: syntax error: unterminated quoted string

Chyba się poddaje, nie za bardzo wiem co z tym dalej robić. Może ktoś mądrzejszy  podchwyci temat smile

9

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Ta binarka nie jest skompolowana pod procesor na routerze. Wygląda tak jak byś użył kompilatora z hosta a nie kompilatora dedykowanego dla danej platformy.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Co do mojego sprzętu - GL.init AX-1800 z wgranym jakimś rozwojowym Openwrt 23 stąd https://github.com/solidus1983/openwrt/ … 60xx-devel
Tam jest procesor IPQ6000 który ma architekturą aarch64_cortex-a53.
Teraz dodałem parametry do "go build", mianowicie budowanie GO wygląda tak:

CC=aarch64-openwrt-linux-musl-gcc GOOS=linux GOARCH=arm64 CGO_ENABLED=1 go build 

Błąd prawie taki sam przy odpalaniu binarni:

root@OpenWrt:~# sh ipp-usb 
ipp-usb: line 1: ELF��@�-S@8: not found
ipp-usb: line 2: syntax error: unexpected ")"
 

11

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Nie odpadaj tego przez sh ipp-usb  - to nie jest skryot. Po prostu ./ipp-usb jeżeli to jest faktcznie binarka.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Działa smile Wielkie dzięki Cezary. Została kwestia kompilacji do pakietu z konfiguracją i odpalany jako serwis - spróbuje ogarnąć.

13 (edytowany przez Karol_K 2023-09-07 10:58:20)

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Ok, w miarę ogarnąłem -> binarka odpala sie jako serwis i powinna czytać konfigurację.
Jak ktoś jest sobie sam w stanie skompilować openwrt to pakiet jest do testów https://github.com/kkraszy/ipp-usb-openwrt
Potrzeba 7-10mb wolnego miejsca na routerze i w miare nowe openwrt -> moje testy były na wersji 23, nie wiem jak to bedzie działć na innych
Dla pierwszych chętnych mogę sie podjąć kompilacji pod ich hardware i podrzucić plik ipk.

14

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Cześć,

Szukam czegoś co umożliwi drukowanie z urządzenia Android na drukarce HP LJ M28a (bez WiFi).
Czy ten pakiet daje taką mo zliwość?
Czy to znaczy,  że apka HP na Android znajdzie drukarkę (a może i skaner)?

15

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

kacperr napisał/a:

Cześć,

Szukam czegoś co umożliwi drukowanie z urządzenia Android na drukarce HP LJ M28a (bez WiFi).
Czy ten pakiet daje taką mo zliwość?
Czy to znaczy,  że apka HP na Android znajdzie drukarkę (a może i skaner)?

OpenWrt to jedna sprawa, a aplikacja na Androida to druga sprawa.
Ze strony OpenWrt sprawdź p910nd i avahi, a ze strony Androida musisz sam sprawdzić i poszukać odpowiedniej aplikacji o ile taką znajdziesz.

16

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

p910nd mam i działa poprawnie.
Avahi to tylko rozgłaszanie więc chyba nie ma sensu instalować tego (szczególnie w Gargoyle).

Wiem, że Android to osobna sprawa ale pytam o to czy "ipp-usb" może pomóc w odnalezieniu drukarki w sieci przez apki Android.
Żadne programy android nie widzą drukarki podłączonej przez p910nd.

17

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Nie widzę "avahi-daemon' w pakietach

root@Gargoyle:/etc# opkg update
Downloading package list for gargoylepl_kernelspecific source...
Package list for gargoylepl_kernelspecific downloaded successfully.

Downloading package list for gargoylepl_base source...
Package list for gargoylepl_base downloaded successfully.

Downloading package list for openwrt_22.03.6_telephony source...
Package list for openwrt_22.03.6_telephony downloaded successfully.

Downloading package list for openwrt_22.03.6_base source...
Package list for openwrt_22.03.6_base downloaded successfully.

Downloading package list for openwrt_22.03.6_routing source...
Package list for openwrt_22.03.6_routing downloaded successfully.

Downloading package list for openwrt_22.03.6_packages source...
Package list for openwrt_22.03.6_packages downloaded successfully.




root@Gargoyle:/etc# opkg list | grep  avahi-daemon
avahi-daemon-service-http - 0.8-8 - Avahi is an mDNS/DNS-SD (aka RendezVous/Bonjour/ZeroConf)
avahi-daemon-service-ssh - 0.8-8 - Avahi is an mDNS/DNS-SD (aka RendezVous/Bonjour/ZeroConf)

root@Gargoyle:/etc# opkg install avahi-daemon
No packages to install.

Segmentation fault

18

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

1. W gargoyle (i tylko tam) drukarka jest już rozgłaszana przez odpowiednią konfigurację dnsmasq, o ile jest włączony plugin do drukarki w gargoyle.
2. pakiet nazywa się np. avahi-dbus-daemon, ale to nadal - tylko rozgłaszanie drukarki przy wykorzystaniu Avahi.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Avahi w OpenWrt niby nic nie robi i tylko rozgłasza, a mimo to coś robi, bo niektóre aplikacje androidowe zaczynają widzieć drukarkę USB.

20

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

No widzą, bo avahi to rozgłasza smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

21

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Dzięki
Udało mi się uruchomić avahiw Gargoyle ale to nic nie pomogło. Programy drukujące na android dalej nie widzę tej drukarki.
Zostaje chyba tylko jednak CUPS na Proxmox. Postawię micro serverek debian z samym CUPSem i zobaczymy, czy drukowanie z Android i iPhone ruszy.

22 (edytowany przez Focus 2024-01-29 09:31:51)

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Nawet jeżeli żadna aplikacja do drukowania nie wykrywa tej drukarki i mając uruchomione avahi to Bonjour mimo wszystko powinien rozgłosić/znaleźć tą drukarkę.

Sprawdź najpierw jakie usługi oferuje Bonjour i na jakim porcie.
Mając avahi nie szukaj aplikacji, gdzie trzeba wpisać adres IP oraz port z protokołem RAW.
Systemowe usługi drukowania w Androidzie też nie wykryją takiej drukarki.
Trzeba szukać aplikacji do drukowania, która wykrywa usługi Bonjour.

Edit.
Skoro uruchomiłeś avahi i żadna androidowa aplikacja nic nie wykrywa, to wygląda tak jakbyś nic nie dodał do services.
Użyłem kilku aplikacji w tym HP Smart i drukarka jest wykrywana jako Kabel Ethernet, w innych aplikacjach wykrywa jako WiFi.

23

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Szukałem i znalazłem:)
Apka PrintBot od zenofx.com.

Wersja bezpłatna dodaje znak wodny ale działa z drukarką HP LJ M28a.
Trochę się boję, że dane lecą przez serwer zewnętrzny więc zaczynam się martwić ale sprawdzę czy drukuje OFFLINE (tzn zablokuję intrernet dla telefonu).

24

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

O nie!
Wydruk leci jednak przez serwery zewnętrzne:(
Czy z CUPS jest bezpieczniej?

25

Odp: Airprint na openwrt - próba kompilacji projektu ipp-usb pod openwrt

Jeżeli w tej aplikacji wpisałeś ręcznie adres IP to avahi nie bierze w tym udziału.
Samo uruchomienie avahi to za mało, bo trzeba jeszcze dodać printer.service.
No i są aplikacje które drukują bez ograniczeń i bez znaków wodnych.