Originally Posted by
SpireStone
Файлы помещаются во флеш, проверяю через System Setup - Flashfs Management!
Какова моя последовательность действий? А то я уже путаться начинаю...
Code:
1.
cd /tmp
wget http://oleg.wl500g.info/hplj/usb_printerid
wget http://oleg.wl500g.info/hplj/sihp1020.dl
chmod +x usb_printerid
./usb_printerid /dev/lp0 | grep -q FWVER || cat sihp1020.dl > /dev/lp0
Лучше добавлять файлы тогда в /usr/local/sbin
Code:
cd /usr/local/sbin
wget http://oleg.wl500g.info/hplj/usb_printerid
wget http://oleg.wl500g.info/hplj/sihp1020.dl
chmod +x usb_printerid
Code:
2.
#!/bin/sh
echo --------------- >> /tmp/hotplug.log
date >> /tmp/hotplug.log
echo $* >> /tmp/hotplug.log
set >> /tmp/hotplug.log
if [ "$ACTION" = "add" ] || [ "$1" = "usb" ] || [ "$DEVFS" = "/proc/bus/usb" ]; then
sleep 5
/tmp/harddisk/etc/usb_printerid /dev/lp0 | grep -q FWVER || cat /tmp/harddisk/etc/sihp1020.dl > /dev/lp0
echo "Firmware loaded succesfully!" >> /tmp/hotplug.log
else
echo "Device removed" >> /tmp/hotplug.log
fi
/sbin/hotplug $*
echo "/tmp/local/sbin/hotplug" >> /proc/sys/kernel/hotplug
Лучше записать вот такой скрипт в /usr/local/sbin/hotplug.sh:
Code:
#!/bin/sh
# Upload the firmware to the printer
PROD=3f0/2b17/100
PRINTERID=/usr/local/sbin/usb_printerid
FIRMWARE=/usr/local/sbin/sihp1020.dl
DEVICE=/dev/lp0
if [ "$PRODUCT" = "$PROD" ] && [ "$ACTION" = "add" ]; then
${PRINTERID} ${DEVICE} | grep -q FWVER || cat ${FIRMWARE} > ${DEVICE}
echo "`date` Firmware loaded for HP LaserJet 1020 device ${DEVICE}" >> /tmp/syslog.log
fi
/sbin/hotplug $*
Получается, что этого достаточно? Но ведь файлы помещаются в папку tmp, которая очищается...
И следующий скрипт без параметра /usb/ работать не желает...
Code:
3.
# making a dir
mkdir /usr/local/sbin
# change to that dir
cd /usr/local/sbin
# copy files from to flash
wget http://oleg.wl500g.info/hplj/usb_printerid
wget http://oleg.wl500g.info/hplj/sihp1020.dl
# make hotplug.sh file
echo "#!/bin/sh" > hotplug.sh
echo "/usr/local/sbin/usb_printerid /dev/lp0 | grep -q FWVER || cat /usr/local/sbin/sihp1020.dl > /dev/lp0" >> hotplug.sh
# this will load firmware every time printer is plugged in, and firmware is not present
# make post-boot script
echo "#!/bin/sh" > post-boot
echo "if [ -w /dev/lp0 ]" >> post-boot
echo "cat /usr/local/sbin/sihp1020.dl>/dev/lp0" >> post-boot
echo "fi" >> post-boot
# place hotplug.sh into hotplug
# this will take care of situation when printer was plugged in before powering router, and activate hotplug
echo "/usr/local/sbin/hotplug.sh" >> /proc/sys/kernel/hotplug
# make pre-boot file
echo "#!/bin/sh" >> pre-boot
echo "# Printer" >> pre-boot
echo "/bin/echo /usr/local/sbin/hotplug.sh >> /proc/sys/kernel/hotplug" >> pre-boot
# now make everything executable
chmod +x /usr/local/sbin/*
# save everything to flash and restart router
flashfs save
flashfs commit
flashfs enable
reboot
Перед танцами с бубном предварительно очищаю флеш.
В общем-то нужно добавить в /usr/local/sbin/post-boot:
Code:
#!/bin/sh
if [ -w "/dev/lp0" ]; then
PRINTERID=/usr/local/sbin/usb_printerid
FIRMWARE=/usr/local/sbin/sihp1020.dl
DEVICE=/dev/lp0
${PRINTERID} ${DEVICE} | grep -q FWVER || cat ${FIRMWARE} > ${DEVICE}
fi
echo "/usr/local/sbin/hotplug.sh" > /proc/sys/kernel/hotplug
Далее сделать:
Code:
chmod +x /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/hotplug.sh
flashfs save && flashfs commit && flashfs enable
Как-то так, тогда, если у вас принтер уже будет подключен к роутеру до его старта, по идее должен прогрузить Firmware.