p910nd Print server

о модулях и их работе

p910nd Print server

Postby tals » 01 Feb 2012, 20:59

Внимание! Решение найдено. Смотрите самое последнее сообщение.
Перейти к сообщению: http://moservices.org/forum/viewtopic.php?f=7&t=1337&p=24612#p25528


Дорогие форумчане!

(O!Play HDP-R3, стандартная прошивка + moservices2)

Помогите решить задачу:
Пытаюсь собрать p910nd (http://sourceforge.net/projects/p910nd/files/p910nd/) для своего O!Play HDP-R3. Решил попробовать подключить принтер через USB порт.

Использую toolchain предоставляемый ASUS для O!Play HD2.
В Makefile прописал кросскомпилятор
Code: Select all
CROSS = /usr/local/toolchain_mipsel/bin/mipsel-linux-uclibc-

Всё собирается без проблем, только не с теми библиотеками :(

Code: Select all
/usr/local/toolchain_mipsel/bin/mipsel-linux-uclibc-ldd ./p910nd
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
        libc.so.0 => not found (0x00000000)
        libc.so.6 => /lib/libc.so.6 (0x00000000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)


В результате на самом плейере файл не запускается
Code: Select all
./p910nd –help
./p910nd: can't load library 'libgcc_s.so.1'


Подскажите плиз, как правильно поправить Makefile, чтобы собралось с нужными библиотеками.
Заранее спасибо

-----------------
Мой вариант Makefile:

Code: Select all
# Define USE_WRAP if you want to compile with
# libwrap (hosts.{allow,deny} access control)
ifneq ($(USE_WRAP),)
LIBS += -lwrap
DEFINES += -DUSE_LIBWRAP
endif

# If you don't have it in /var/log/subsys, uncomment and define
CFLAGS += -DLOCKFILE_DIR=\"/var/log\"

# GNU target string
CROSS = /usr/local/toolchain_mipsel/bin/mipsel-linux-uclibc-

CC = $(CROSS)gcc
STRIP = $(CROSS)strip

CFLAGS += -O2  -Wall

PROG = p910nd
CONFIG = p910nd.conf
INITSCRIPT = p910nd.init
MANPAGE = p910nd.8
INSTALL = install
BINDIR = /usr/local/etc/mos/p910nd
CONFIGDIR = /usr/local/etc/mos/p910nd
SCRIPTDIR = /usr/local/etc/mos/scripts
#MANDIR = /usr/local/share/man/man8

$(PROG):        p910nd.c
        $(CC) -o $@ $^ $(CFLAGS) $(DEFINES) $(LIBS) $(LDFLAGS)
#       $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)

strip: $(PROG)
        $(STRIP) -s $(PROG)

install: $(PROG) $(CONFIG) $(INITSCRIPT) $(MANPAGE)
        mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(CONFIGDIR) \
                $(DESTDIR)$(SCRIPTDIR) $(DESTDIR)$(MANDIR)
        $(INSTALL) $(PROG) $(DESTDIR)$(BINDIR)
        $(INSTALL) -m 644 $(CONFIG) $(DESTDIR)$(CONFIGDIR)/$(CONFIG)
        $(INSTALL) $(INITSCRIPT) $(DESTDIR)$(SCRIPTDIR)/$(PROG)
#       $(INSTALL) -m 644 $(MANPAGE) $(DESTDIR)$(MANDIR)

.PHONY: clean
clean:
        rm -f *.o $(PROG)
Last edited by tals on 15 Feb 2012, 17:20, edited 4 times in total.
-----
O!Play Air [HDP-R3]
1.28P
MoServices 2.0
tals
 
Posts: 7
Joined: 19 Jul 2011, 18:24

Re: p910nd

Postby 123serge123 » 04 Feb 2012, 15:14

В принципе этого должно быть достаточно. Проверьте наличие либы на плеере. Ну и для примера собранный бинарник (у меня нормально запускается).
Attachments
p910nd.zip
(6.09 KiB) Downloaded 258 times
123serge123
 
Posts: 186
Joined: 02 Oct 2010, 08:49

Re: p910nd

Postby tals » 04 Feb 2012, 23:16

Большое спасибо за ответ.

Одной либы не хватает, поэтому файл не запускается.
Code: Select all
./p910nd: can't load library 'libgcc_s.so.1'



На моём компе, показала зависимость следующих библиотек:
Code: Select all
ldd p910nd
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
        libc.so.0 => /lib/libc.so.0 (0x00000000)
        /lib/ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x00000000)


Не подскажете, как удалось собрать с поддержкой uClibc?
-----
O!Play Air [HDP-R3]
1.28P
MoServices 2.0
tals
 
Posts: 7
Joined: 19 Jul 2011, 18:24

Re: p910nd

Postby 123serge123 » 05 Feb 2012, 08:03

Никаких дополнительных усилий не прилагал :). Правильно собранный кросс-компилятор должен автоматически собирать программы со своими либами, а не системными. При этом ldd на хост-системе может показывать всякий бред.
Code: Select all
serge@asus:/opt/src/p910nd-0.95$ ldd p910nd
        не является динамическим исполняемым файлом
serge@asus:/opt/src/p910nd-0.95$ mipsel-linux-ldd p910nd
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
        libc.so.0 => not found (0x00000000)
        libc.so.6 => /lib/libc.so.6 (0x00000000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)

Есть шанс, что у Вас действительно все нормально и только отсутствие на плеере либы /lib/libgcc_s.so.1 не позволяет запускать динамически собранные программы. Варианты решения очевидны:
1. Скопировать недостающую либу на плеер.
2. Собирать статическую версию (ключик -static компилятора).
Attachments
p910nd.static.zip
статически собранный бинарник p910nd
(37.56 KiB) Downloaded 288 times
123serge123
 
Posts: 186
Joined: 02 Oct 2010, 08:49

Re: p910nd

Postby tals » 06 Feb 2012, 21:44

Думаю у меня неправильно настроен toolchain от asus.
На выходных пробовал собрать на другом работающем toolchain [i386-linux-uclibc]. Собралось без проблем. Дополнительную библиотеку не просит :)

Code: Select all
ldd ./p910nd
        libc.so.0 => /lib/libc.so.0 (0x40007000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x40000000)


Может кто-нибудь подскажет, как правильно настроить toolchain от asus?
Я просто устанавливал *.rpm пакеты и прописывал путь к бинарникам:


Code: Select all
mipsel-sdelinux-v6.03.01-1.i386.rpm
toolchain_mipsel-6.03-6.i586.rpm

PATH=$PATH:/usr/local/toolchain_mipsel/bin
-----
O!Play Air [HDP-R3]
1.28P
MoServices 2.0
tals
 
Posts: 7
Joined: 19 Jul 2011, 18:24

Re: p910nd

Postby tals » 13 Feb 2012, 17:03

Всем привет!

Я пошёл более сложным путём: собрал собстенный кросс-компилятор и теперь всё нормально работает. Опирался в основном на этот документ: http://www.linuxfromscratch.org/hints/d ... uclibc.txt
В результате получился работающий пакет. Возможно кому-то пригодится, если есть USB принтер, который можно подключить в USB порт плейера. [делал под MOS2; думаю пользователям MOS3 не составит труда подправить пакет под свою версию]

Как устанавливать и пользоваться:
1. Подключаемся через telnet к плейеру
2. Переходим в нужную директорию:
Code: Select all
cd /usr/local/etc

3. Скачиваем пакет:
Code: Select all
wget -c http://moservices.org/forum/download/file.php?id=1016

К сожалению файл скачается не с родным именем, поэтому переименум:
Code: Select all
mv file.php?id\=1016 p910nd-0.95-HDP-Rx-120213.tar

4. Устанавливаем^
Code: Select all
tar xvf p910nd-0.95-HDP-Rx-120213.tar

5. Удаляем сам пакет:
Code: Select all
rm p910nd-0.95-HDP-Rx-120213.tar

6. Выключаем плейер
7. Подключаем принтер через USB (принтер лучше всегда включать до плейра, чтобы избежать постоянного определения устройсва: будет постоянно мигать крайняя правая лампочка)
8. Включаем плейер
9. В настройках драйвера принтера на Вашем компьютере добавим TCP/IP port; Прописывыем IP плейера и ждём завершения поиска принтера.
Затем прописываем порт 9100 протокол RAW
10. Выбираем новый порт по-умолчанию
11. Печатаем пробную страницу

Пробная страница должна нормально распечататься.

При возникновении проблем, подключитесь к плейеру и проверьте
1. Запущен ли сервис:
Code: Select all
/usr/local/etc/mos/scripts/p910nd status

2. Подключен ли модуль ядра:
Code: Select all
lsmod | grep usblp

3. Открыт ли порт 9100:
Code: Select all
netstat -na | grep 9100



Удаление пакета из плейера

1. Остановите сервис:
Code: Select all
/usr/local/etc/mos/scripts/p910nd stop


2. Удалите содержимое пакета
./mos
./mos/scripts
./mos/scripts/p910nd
./mos/p910nd
./mos/p910nd/p910nd
./mos/p910nd/usblp.ko
./mos/p910nd/control

Code: Select all
rm /usr/local/etc/mos/scripts/p910nd
rm -fr /usr/local/etc/mos/p910nd
Attachments
p910nd-0.95-HDP-Rx-120213.tar
(197.5 KiB) Downloaded 313 times
-----
O!Play Air [HDP-R3]
1.28P
MoServices 2.0
tals
 
Posts: 7
Joined: 19 Jul 2011, 18:24

Re: moServices 3

Postby retv_qwe » 28 Jan 2015, 11:52

Меня больше новая фишка интересует: принт сервер p910Nd v0.97.
Два принтера, один HP LJ P1006, второй Samsung SCX-4200.
В системе определяются
| +
Code: Select all
~ # ls -la /dev/usb/
drwxr-xr-x    1 root     root             0 Jan  1  1970 .
drwxr-xr-x    1 root     root             0 Jan  1  1970 ..
crw-rw----    1 root     root      180,   0 Jan  1  1970 lp0
Далее
| +
Code: Select all
~ # cat /etc/services | grep 9100
jetdirect       9100/tcp        laserjet hplj   #
Смущает то, что на Samsung выдает тот же laserjet hplj.
При попытке отправить на печать что либо HP выдает ошибку, а Samsung включает разогрев и на экране Samsung написано ПЕЧАТЬ, но не более, печати не происходит.
Хотя при подаче такой команды (не важно)
| +
Code: Select all
cat /tmp/test.txt > /dev/usb/lp0
даже HP запускает разогрев.
Как заставить эту фишку работать?
3Q-F420HW на проце RT1073DD C+, прошивка официальная V9.11-Lite_2012-05-31, moServices core
retv_qwe
 
Posts: 233
Joined: 01 Jun 2012, 13:19

Re: p910nd Print server

Postby FarVoice » 28 Jan 2015, 12:06

Сделал модуль для moS
ASUS O!Play R1 (amp_r12_vrtn), xTreamer Pro (amp_r12_vrt), xTreamer Prodigy (iNeXT 2.14 r2), IconBIT HDR12L (amp_r12_vrt), 3Q F425HW (xds42gl_7725_r3), MyGica A11 (mygica_m3_20121222)
User avatar
FarVoice
Администратор
 
Posts: 8572
Joined: 03 Sep 2010, 01:27
Location: Russia, Moscow

Re: p910nd Print server

Postby FarVoice » 28 Jan 2015, 12:08

@retv_qwe
А дрова в винде вы правильные указали для принтеров?
ASUS O!Play R1 (amp_r12_vrtn), xTreamer Pro (amp_r12_vrt), xTreamer Prodigy (iNeXT 2.14 r2), IconBIT HDR12L (amp_r12_vrt), 3Q F425HW (xds42gl_7725_r3), MyGica A11 (mygica_m3_20121222)
User avatar
FarVoice
Администратор
 
Posts: 8572
Joined: 03 Sep 2010, 01:27
Location: Russia, Moscow

Re: p910nd Print server

Postby retv_qwe » 28 Jan 2015, 12:36

Да, правильные, принтер то в винде работает. Может что с портом не так
| +
ris1.jpg
ris1.jpg (36.31 KiB) Viewed 7053 times
3Q-F420HW на проце RT1073DD C+, прошивка официальная V9.11-Lite_2012-05-31, moServices core
retv_qwe
 
Posts: 233
Joined: 01 Jun 2012, 13:19

Next

Return to Модули

Who is online

Users browsing this forum: No registered users and 15 guests