51

Odp: USBIP jak zainstalować

Proste - programy userspace nie są już w staging_dir a toolsach w kernelu, więc trzeba makefile zmienić żeby wskazywało inne katalogi.

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

52 (edytowany przez build000 2015-05-06 04:07:17)

Odp: USBIP jak zainstalować

Skoro takie proste nie prościej komuś po prostu napisać konkretnie jak ma wyglądać ów Makefile miast wykład stosować o zmianach ? - ja po prostu chcę to zbudować bez wnikania w zawiłości trunka/jądra/i.t.d. wink

Na razie sam wykumałem tyle:

#
# Copyright (C) 2010-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=usbip
#PKG_RELEASE:=3

# Since kernel 2.6.39.1 userspace tools are inside the kernel tree
# Package Automatic match version in kernel
# MD5SUM is not useful kernel package already check it
#PKG_VERSION:=$(shell  sed -n -e '/^AC_INIT/s/.*\[\([[:digit:]\.]*\)\].*/\1/gp' $(LINUX_DIR)/drivers/staging/usbip/userspace/configure.ac)
PKG_VERSION:=0.1.7
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=/projekty/openwrt/trunk/dl/$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_MD5SUM:=unknown

PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>

PATCH_DIR:=./patches-$(PKG_VERSION)

#define prepare_source_directory
#    rm -rf $(PKG_BUILD_DIR)
#    $(CP) $(LINUX_DIR)/drivers/staging/usbip/userspace $(PKG_BUILD_DIR)
#endef
#Hooks/Prepare/Pre += prepare_source_directory

PKG_BUILD_DEPENDS:=glib2 sysfsutils
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk

define Package/usbip/Common
  TITLE:=USB-over-IP
  URL:=http://usbip.sourceforge.net/
  DEPENDS:=@USB_SUPPORT
endef

define Package/usbip/Default
  $(call Package/usbip/Common)
  SECTION:=net
  CATEGORY:=Network
endef

define Package/usbip
  $(call Package/usbip/Default)
  TITLE+= (common)
  DEPENDS+= +libsysfs +libwrap +kmod-usbip
endef

define Package/usbip-client
  $(call Package/usbip/Default)
  TITLE+= (client)
  DEPENDS+= usbip +glib2 +kmod-usbip-client
endef

define Package/usbip-server
  $(call Package/usbip/Default)
  TITLE+= (server)
  DEPENDS+= usbip +glib2 +kmod-usbip-server
endef

CONFIGURE_PATH:=./src
MAKE_PATH:=./src
LIBTOOL_PATHS:=./src
MAKE_FLAGS+=CFLAGS="-Wno-implicit-function-declaration"

define Build/Configure
    (cd $(PKG_BUILD_DIR)/src; ./autogen.sh );
    $(call Build/Configure/Default)
endef

CFLAGS+="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include"

define Download/usb.ids
  URL:=http://www.linux-usb.org/
  FILE:=usb.ids
  MD5SUM:=
endef

define Package/usbip/install
    $(INSTALL_DIR) $(1)/usr/lib
    $(CP) $(PKG_INSTALL_DIR)/usr/lib/libusbip.so.* $(1)/usr/lib/
    $(INSTALL_DIR) $(1)/usr/share/hwdata
    $(CP) $(DL_DIR)/usb.ids $(1)/usr/share/hwdata/
endef

define Package/usbip-client/install
    $(INSTALL_DIR) $(1)/usr/sbin
    $(CP) $(PKG_INSTALL_DIR)/usr/bin/usbip $(1)/usr/bin/
endef

define Package/usbip-server/install
    $(INSTALL_DIR) $(1)/usr/bin
    $(CP) $(PKG_INSTALL_DIR)/usr/bin/usbipd $(1)/usr/bin/
endef

$(eval $(call Download,usb.ids))
$(eval $(call BuildPackage,usbip))
$(eval $(call BuildPackage,usbip-client))
$(eval $(call BuildPackage,usbip-server))

A to log z budowy tego fragmentu dla zainteresowanych:
http://wklej.org/id/1704453/


Czy tak będzie dobrze ?
Nie wiem gdzie tego szukać w sieci, więc zassałem z sourceforge.net i wrzuciłem do <tam gdzie leży trunk>/dl po prostu.
Paczki się zrobiły ale czy to będzie działać to nie wiem... smile

EDIT:
Tak jak pierwotnie myślałem - jednak potrzebne będą solidne patche do źródeł:

root@OpenWrt:~# usbip -v
usbip 0.1.7 ($Id: vhci_attach.c 42 2007-09-07 12:07:51Z hirofuchi $)
root@OpenWrt:~# usbip -D
Usage: usbip [options]                
    -a, --attach [host] [bus_id]        
        Attach a remote USB device.    
                        
    -x, --attachall [host]        
        Attach all remote USB devices on the specific host.    
                        
    -d, --detach [ports]            
        Detach an imported USB device.    
                        
    -l, --list [hosts]            
        List exported USB devices.    
                        
    -p, --port                
        List virtual USB port status.     
                        
    -D, --debug                
        Print debugging information.    
                        
    -v, --version                
        Show version.            
                        
    -h, --help                 
        Print this help.        
root@OpenWrt:~# usbipd
usbip err: stub_driver.c:  33 (open_sysfs_stub_driver) usbip_common_mod.ko and usbip.ko must be loaded

** (process:6693): ERROR **: driver open failed
Trace/breakpoint trap

53

Odp: USBIP jak zainstalować

Ale Ty nie załadowałeś modułów do jądra smile kmod* zainstalowałeś?

Nie mogę wszystkiego za was robić. Trochę wysiłku intelektualnego nie zaszkodzi.

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

54 (edytowany przez build000 2015-05-06 06:18:09)

Odp: USBIP jak zainstalować

No jest oczywiście zainstalowany.
Tu wykaz co jest w obrazie:
http://wklej.org/id/1704504/

55

Odp: USBIP jak zainstalować

usbip_common_mod.ko and usbip.ko must be loaded <- on twierdzi że nie smile

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

56 (edytowany przez build000 2015-05-06 06:29:24)

Odp: USBIP jak zainstalować

No bo teraz nie ma takich modułów po prostu - inaczej się nazywają.
Teraz są w aktualnym jądrze 3.8.11:
usbip-core.ko => kmod-usbip
usbip-host.ko => kmod-usbip-server
vhci-hcd.ko => kmod-usbip-client
Stąd wniosek, że albo dobre łatanie źródeł usbip, albo inny Makefile, albo jeszcze inaczej...
wink

57

Odp: USBIP jak zainstalować

A skąd masz te źródła usbip? Z dl.openwrt? Bo one są normalnie w kernelu tak jak poprzednie.

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

58 (edytowany przez build000 2015-05-06 06:39:02)

Odp: USBIP jak zainstalować

Z sourceforge.net (tam to jest łączone z drivers, ale tylko kompilowałem samą apkę//katalog src//, która już nie pasuje do tego obecnego kernela w openwrt - oryginalnie drivers'y są tylko do jakichś 2.6.*) - jak pisałem, nie mogłem tego znaleźć nigdzie.
W kernelu są tylko drivers - a sama apka ?

59

Odp: USBIP jak zainstalować

W tools w źródłach kernela, pisałem to.

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

60 (edytowany przez build000 2015-05-06 06:41:14)

Odp: USBIP jak zainstalować

Konkludując - masz pasujący Makefile (a może i łaty) do obecnej sytuacji ?

61

Odp: USBIP jak zainstalować

Do trunka nie. Zmień istniejący ze staging_dir na tools/itd.

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

62 (edytowany przez build000 2015-05-06 06:50:00)

Odp: USBIP jak zainstalować

No ok. - są faktycznie w <źródła linuxa>/tools/usb/usbip - spróbuję pokombinować, chociaż z moim ciężkim myśleniem to nie wiem czy się uda...ale widzę po dialogu z Cezarym, że chyba "musi mi się udać" wink

63

Odp: USBIP jak zainstalować

Na razie poprawiłem Makefile i ogólnie zaczęło się budować, ale... :

(...)
checking for strchr... yes
checking for strerror... (cached) yes
checking for strstr... yes
checking for strtoul... yes
checking libudev.h usability... no
checking libudev.h presence... no
checking for libudev.h... no
configure: error: Missing /usr/include/libudev.h
Makefile:106: recipe for target '/projekty/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_nand/usbip-2.0/.configured_yyyyyyyyyn' failed
make[3]: *** [/projekty/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_nand/usbip-2.0/.configured_yyyyyyyyyn] Error 1
make[3]: Leaving directory '/projekty/openwrt/trunk/feeds/oldpackages/net/usbip'
package/Makefile:183: recipe for target 'package/feeds/oldpackages/usbip/compile' failed
make[2]: *** [package/feeds/oldpackages/usbip/compile] Error 2
make[2]: Leaving directory '/projekty/openwrt/trunk'
package/Makefile:180: recipe for target '/projekty/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/stamp/.package_compile' failed
make[1]: *** [/projekty/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/stamp/.package_compile] Error 2
make[1]: Leaving directory '/projekty/openwrt/trunk'
/projekty/openwrt/trunk/include/toplevel.mk:181: polecenia dla obiektu 'world' nie powiodły się
make: *** [world] Błąd 2
slawek@slawek-ubuntu:/projekty/openwrt/trunk$

I jak to dalej ogarnąć ?

64

Odp: USBIP jak zainstalować

Missing /usr/include/libudev.h, pewnie z udev musisz pokombinować.

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

65 (edytowany przez build000 2015-05-06 08:32:34)

Odp: USBIP jak zainstalować

No właśnie tak pomyślałem i tam to siedzi - ale przecież instalacja udev w jakimś tam routerku to go położy na amen (poza tym nie wiadomo czy w ogóle działa to jak powinno na obecnym stanie całości - dodatkowa komplikacja)...
sad

EDIT:
I tak to nic ie dało - dodanie owego udev jako dependencies, gdyż nie tworzy (a w zasadzie usbip jej nie widzi) stosownej biblioteki:

(...)
Package usbip is missing dependencies for the following libraries:
libudev.so.0
Makefile:107: recipe for target '/projekty/openwrt/trunk/bin/ar71xx/packages/oldpackages/usbip_2.0-4_ar71xx.ipk' failed
make[3]: *** [/projekty/openwrt/trunk/bin/ar71xx/packages/oldpackages/usbip_2.0-4_ar71xx.ipk] Error 1
make[3]: Leaving directory '/projekty/openwrt/trunk/feeds/oldpackages/net/usbip'
package/Makefile:183: recipe for target 'package/feeds/oldpackages/usbip/compile' failed
make[2]: *** [package/feeds/oldpackages/usbip/compile] Error 2
make[2]: Leaving directory '/projekty/openwrt/trunk'
package/Makefile:180: recipe for target '/projekty/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/stamp/.package_compile' failed
make[1]: *** [/projekty/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/stamp/.package_compile] Error 2
make[1]: Leaving directory '/projekty/openwrt/trunk'
/projekty/openwrt/trunk/include/toplevel.mk:181: polecenia dla obiektu 'world' nie powiodły się
make: *** [world] Błąd 2
slawek@slawek-ubuntu:/projekty/openwrt/trunk$ 

66

Odp: USBIP jak zainstalować

Eeeh, z wami tak zawsze. Jednak nie dodałeś zależności. Mi się kompiluje przy takich zmianach:

@@ -14,7 +14,7 @@ PKG_RELEASE:=3
 # Since kernel 2.6.39.1 userspace tools are inside the kernel tree
 # Package Automatic match version in kernel
 # MD5SUM is not useful kernel package already check it
-PKG_VERSION:=$(shell  sed -n -e '/^AC_INIT/s/.*\[\([[:digit:]\.]*\)\].*/\1/gp' $(LINUX_DIR)/drivers/staging/usbip/userspace/configure.ac)
+PKG_VERSION:=$(shell  sed -n -e '/^AC_INIT/s/.*\[\([[:digit:]\.]*\)\].*/\1/gp' $(LINUX_DIR)/tools/usb/usbip/configure.ac)
 PKG_SOURCE:=
 PKG_SOURCE_URL:=
 PKG_MD5SUM:=unknown
@@ -25,11 +25,11 @@ PATCH_DIR:=./patches-$(PKG_VERSION)

 define prepare_source_directory
        rm -rf $(PKG_BUILD_DIR)
-       $(CP) $(LINUX_DIR)/drivers/staging/usbip/userspace $(PKG_BUILD_DIR)
+       $(CP) $(LINUX_DIR)/tools/usb/usbip $(PKG_BUILD_DIR)
 endef
 Hooks/Prepare/Pre += prepare_source_directory

-PKG_BUILD_DEPENDS:=glib2 sysfsutils
+PKG_BUILD_DEPENDS:=udev
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1

@@ -51,19 +51,19 @@ endef
 define Package/usbip
   $(call Package/usbip/Default)
   TITLE+= (common)
-  DEPENDS+= +libsysfs +libwrap +kmod-usbip
+  DEPENDS+= +libwrap +kmod-usbip +udev
 endef

 define Package/usbip-client
   $(call Package/usbip/Default)
   TITLE+= (client)
-  DEPENDS+= usbip +glib2 +kmod-usbip-client
+  DEPENDS+= usbip +kmod-usbip-client
 endef

 define Package/usbip-server
   $(call Package/usbip/Default)
   TITLE+= (server)
-  DEPENDS+= usbip +glib2 +kmod-usbip-server
+  DEPENDS+= usbip +kmod-usbip-server
 endef

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

67

Odp: USBIP jak zainstalować

Dodałem - ale inaczej - i to pewno był błąd:

(...)
Hooks/Prepare/Pre += prepare_source_directory

PKG_BUILD_DEPENDS:=udev glib2 sysfsutils
PKG_FIXUP:=autoreconf
(...)

big_smile

68

Odp: USBIP jak zainstalować

Nie dodałeś. DEPENDS w danym pakiecie, nie BUILD_DEPENDS który jest czymś innym.

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

69

Odp: USBIP jak zainstalować

No właśnie - chociaż spowodowało to, iż najpierw skompilował się udev - więc teoretycznie usbip miał gdzie znaleźć w STAGE_DIR ów libudev.h

70

Odp: USBIP jak zainstalować

I tak było - zbudował ci, później powiedział że nie utworzy paczki bo brakuje pliku bo nie ma zależności. Blisko byłeś.

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

71 (edytowany przez build000 2015-05-06 09:39:05)

Odp: USBIP jak zainstalować

Mówiłem - za ciężki mam beret do tego wink

A tak przy okazji to ten bind_driver to się do czegoś może przydać ?

72

Odp: USBIP jak zainstalować

Nie mam pojęcia, usbip chyba ze dwa razy zdarzyło mi się używać.

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

73 (edytowany przez build000 2015-05-06 09:54:11)

Odp: USBIP jak zainstalować

W sumie mi to też rybka - dla kolesia stukam obraz - zobaczył u mnie ten mój WNDR4300 i mu się spodobał, więc długo się nie zastanawiając nabył identyczny...no i teraz mam "ten teges" ... ehh wink
Tak czy inaczej dziękuję za podpowiedzi.

74

Odp: USBIP jak zainstalować

root@OpenWrt:~# usbipd -D
root@OpenWrt:~# usbip -l
usage: usbip [--debug] [--log] [--tcp-port PORT] [version]
             [help] <command> <args>

  attach     Attach a remote USB device
  detach     Detach a remote USB device
  list       List exportable or local USB devices
  bind       Bind device to usbip-host.ko
  unbind     Unbind device from usbip-host.ko
  port       Show imported USB devices

root@OpenWrt:~# htop
### Tu go zabiłem kill z htopa
root@OpenWrt:~# logread
(...)
Wed May  6 16:36:33 2015 user.info syslog: usbipd: info: starting usbipd (usbip-utils 2.0)
Wed May  6 16:36:33 2015 user.info syslog: usbipd: info: listening on :::3240
Wed May  6 16:36:33 2015 user.info syslog: usbipd: info: listening on 0.0.0.0:3240
Wed May  6 16:37:03 2015 user.info syslog: usbipd: info: shutting down usbipd

Wygląda na to, że serwer działa - teraz dla testu muszę ogarnąć jakąś drukarkę czy cuś. wink

75

Odp: USBIP jak zainstalować

Cześć!
tu jest ciekawe rozwiązanie "komercyjne" bazujące na usbip:
https://www.virtualhere.com/home
Bezpłatne, jeżeli serwer udostępnia w danej chwili tylko jedno urządzenie USB. Jest porządny support od producenta na forum. Klient dostępny na dowolny system, na win 32/64 okienkowy, intuicyjny, po prostu działający i stabilny.
Na razie uruchomiłem na Pogo4 z archlinux i DNS323 z Alt-F. Podłączałem skaner Canona i dyski. Bez pudła działa oryginalny driver Twain, przesyłałem wielokrotnie obrazki ze skanera rzedu 400MB.
Są gotowe binarki na openwrt. Serwer zasadniczo rozgłasza swoją obecność używając avahi, ale nie jest to konieczne, można w kliencie wpisać wprost adres IP.
Na gargoyle zamierzam poeksperymentowć z S/PDIF dwukierunkowym na USB, ale karta ledwie zamówiona w ChRL :-)
Jacek