Originally created by: maximili... (code.google.com)@gmail.com
Hi, I'm running V 1.2.0 on the ns-k330 and I own a laserjet 1020 printer, which needs the sihp1020.dll file to print, I managed to keep it working by ssh'ing to the Nas and running "cat sihp1020.dll > /dev/lp0". This is great, but it would be greater if I didn't have to inject the firmware manually everytime that the printer is restarted or the nas. So, poking around I bumped into a post that provided a script to make the Leds in the nas functional, that required to be loaded in the hotplug events, so, summarizing... would any of you Kind Kind souls give me a tip on how to make the nas launch this script whenever it "feels" the connection of the printer?
I made the script, i also tried loading into the cron.d, but didn't fulfilled my needs.
PS: I know this is not an actual issue of the device, but since i can't find any forum describing this great OS, i thought of asking for help here.
Thanks in advance.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: icq.6990... (code.google.com)@gmail.com
same problem
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: ted.cho... (code.google.com)@gmail.com
hi, sorry for late response, dont know if you still in trouble. Cron is to launch scripts at scheduled times rather than launching at "needs", what you need to do is adding a run line to the bootup scripts, eg. any script in /etc/init.d/*
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: maximili... (code.google.com)@gmail.com
Thanks for the responses, but i don't have the tools in the nas to pull this, or i'm not finding them as i would in a normal linux distro, I know that this is a very compact kernel, but, for example, i placed the script in the /etc/init.d, gave execution privileges, so far so good, but i don't have an Update-rc.d, besides using this method only enables me to send the firmare to the printer if the nas is plugged off and then on, right? if i unplug and plug the printer the nas will not send the firm( at least that's what i think), if you could give me a hand, or explain very briefly how to make it work. I don't mind punching the combo to upload the script every time that i have to print, i wanted to do it this way cuz i'm not the only one in my house who uses the printer, and my family don't know shit about ssh, and sihp1020.dll and such... so i'd be really grateful if you could give me a hand on this one. Thanks in advance, and sorry to bother.
Max.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: maximili... (code.google.com)@gmail.com
I can't thank you enough! i'll give it a try. GENIUS!
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: eliss... (code.google.com)@gmail.com
I've managed to write a better script:
1. Add the following text to the last line of start() routine inside any file in /etc/init.d of a service that you use. In my case I used ddns:
while [ ${HP_SIZE:-empty} != "126151" ] ; do
HP_SIZE=$(ls -l /tmp/sihpP1005.dl | sed 's/.*\(126151\).*/\1/')
HP_SIZE=$(echo $HP_SIZE | sed 's/.*\(sihp1020.dl\).*/\1/')
cd /tmp
wget http://oleg.wl500g.info/hplj/sihp1020.dl
sleep 20
done
/etc/init.d/shp
2. Create a file in /etc/init.d called shp with the following text:
#!/bin/sh
#
echo /dev/mdev -s > /proc/sys/kernel/hotplug
sleep 5
if [ `ls /dev/lp0 2>/dev/nul | grep -c "lp0"` -gt 0 ] ; then cat /tmp/sihp1020.dl > /dev/lp0 ; fi
sleep 5
echo /etc/init.d/shp > /proc/sys/kernel/hotplug
3. Make it executable by setting 0755 file properties or sshing: chmod 755 /etc/init.d/shp
4. Save config file in webconfig (SYSTEM - CONFIG - SAVE CONFIG)
5. Reboot NAS
You're done. The NAS will send the firmware to the printer everytime it is connected or the NAS is restarted.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: stefansc...@googlemail.com
Why would you redownload the firmware every startup instead of saving it somewhere?
Alternative suggestion.
Mdev runs a scripts when a device is added or removed. There's already a rule in /etc/mdev.conf that runs /usr/share/snake/setprinter for printers.
What about creating a wrapper for setprinter that loads the firmware and then runs the actual setprinter script?
something like:
#!/bin/sh
DEV=$1
ACTION=$2
FIRMWARE=<path to firmware>
if [ "$ACTION" = "add" ]; then
cat $FIRMWARE > /dev/$DEV
fi
/usr/share/snake/setprinter $DEV $ACTION
Save as /etc/lpfw.sh and make executable.
In /etc/mdev.conf replace
lp[0-9]* 0:0 660 */usr/share/snake/setprinter $MDEV $ACTION
with
lp[0-9]* 0:0 660 */etc/lpfw.sh $MDEV $ACTION
Note: I haven't actually tested this.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: eliss... (code.google.com)@gmail.com
In my case I have to download it every startup because I don't have a media storage attached, and the NAS itself doesn't have sufficient memory to save that file. I'm currently using this NAS only for the printer. I've moved the other services to goflexnet.
I like your alternate solution. Will try it out.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: stefansc...@googlemail.com
Ah ok.
I wonder if you could fit the firmware into the config partition. 128kb are alloceted for the contents of /etc/. It's gzipped before saving. I can't check right now if it could work but gzipping the firmware yields a 68kb file.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: maximili... (code.google.com)@gmail.com
Hi people!
Stefan,Eliss, check this out:
Copy sihp1020.dll to /etc,
then save this script, as lj1020.sh and chmod +x, (save it to /etc as well)
#!/bin/sh
FIRMWARE=”/etc/sihp1020.dll”
//The following IF contains the laserjet 1020 module id, so my guess is that when you plug the printer, it should look for this.//
if [ "$PRODUCT" = "3f0/2b17/100" ]
then
if [ "$ACTION" = "add" ]
then
sleep 10
cat $FIRMWARE > /dev/lp0
fi
fi
Now, here's the thing, i'm thinking that this needs to be loaded in the mdev.conf too. So the question would be: what should i do with the $MDEV and the $ACTION variables INSIDE the script?
among other thoughts, this could also work for nas leds, at startup. There's an issue posted with the printf commands to be loaded as a hotplug event.
So basically, here's another input, if i could get some feedback i'd be really grateful.
Thanks in advance.
Max.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: Angel.M.... (code.google.com)@gmail.com
Hi all, comment #16 is the right script for me (hp1005) with one important comment:
the call to setprinter, must be before sending the firmware to /dev/lpx. In other case, I was never able to load the firmware correctly. I added as well few sleeping seconds between calling "setprinter" and sending the firmware to the /dev/lpx.
really of help! Thank you!
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: raadselw... (code.google.com)@gmail.com
@Angel & @Stefan,
Thanks a lot for your help with all this.
Can anyone help me with this minor scripting problem that is still left? I thought I had things working following both suggestions.
Stefans script, that is, and Angels suggestion to first make the call to setprinter and then send the firmware.
What it does now is: everytime the printer is turned on, it sends the firmware and I can print.
However, if I turn off the NAS and the printer, then turn the printer back on, and then finally the NAS back on, then (and only then) the firmware doesn't get sent and I cannot print. So, for example, after a power failure, things would not work anymore.
What do you think: is this to be expected, because $action = add is never called? (the printer is already there at startup). Is there a fix? Is it the same for you, Angel? Can I send the firmware in another script that checks for a printer being present at startup?
I've found a different suggestion: http://www.dd-wrt.com/phpBB2/viewtopic.php?t=47053&postdays=0&postorder=asc&start=15&sid=d7b14739f78109056b71e7de558325c9
This script is from the dd-wrt discussion. Do you think it would take away the problem I now have with Stefan's script? I don't fully understand it, though..., and it seems to be left running all the time.
Code:
#!/bin/sh
#last line at dmesg |grep "printer.c: usblp0
#when printer is turned off
PRINTEROFF="printer.c: usblp0: removed"
#time to watch for printer state
WATCHTIME=5
FIRMWARE="/jffs/hp1018.dl"
LASTPRINTER=" "
while true; do
sleep $WATCHTIME
LAST=`dmesg |grep "printer.c: usblp0" | tail -n -1`
if [ "$LAST" != "$PRINTEROFF" ];then
if [ "$LAST" != "$LASTPRINTER" ]; then
LASTPRINTER=$LAST
#echo flashing the printer
cat $FIRMWARE > /dev/usb/lp0
fi
fi
done
Last note: There is a wiki that gives a warning that firmware should not be loaded more than once.... However, I have not been able to check that, because in the current script (Stefans) adding it more than once is impossible. Reportedly this should be the case for a HP1005 (I have a HP1018, so I don't know if it's OK to load its firmware twice) (I could check manually, of course, and will do that in a minute). See: http://wiki.openwrt.org/doc/howto/p910nd.server
It says there: "Some printers, like HP LaserJet 1005, stop working properly when the firmware is loaded more than once. It's best to check whether the firmware is already present in the printer with the usb_printerid command."
HJJ
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: raadselw... (code.google.com)@gmail.com
Update: So, OK, I checked, I can load the firmware twice without a problem.
I will now add the line
cat /etc/init.d/sihp1018.dl >/dev/lp0
to a script in /etc/init.d
I'll take the samba script, sound like the best alternative.
Then I'll save config, turn off NAS (& printer) and try again....
However, that still was unsuccesfull. I guess that Samba was started before the printer was started, maybe that's why the firmware wasn't sent to the printer....
Any help would be very much appreciated!
HJJ
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: raadselw... (code.google.com)@gmail.com
Hi all,
It worked the second time I tried it, moved the line to the top of the /etc/init.d/samba script. So now the firmware is sent at startup and later every time a printer is connected.
Setback: when the printer stays connected but the NAS is rebooted, the firmware is sent for the second time. For me, this is not a problem (reportedly, for a HP1005 it is). I have a HP1018.
HJJ
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: Angel.M.... (code.google.com)@gmail.com
Hi Jansen, good you have solve it. in any case, let me show you what i did in case it is of help.
Background:
-----------
* I have 2 hp printers:
-> Printer A: hp laserject 1005: NAS only detect it when it is switched on
-> Printer B: old hpdeskjet 940c: "infinite ink devourer" curiously, NAS detect always this printer even if it is switched off.
My solution:
------------
Since PinterB is always detected by NAS (I was lucky here), it is always detected as "lp0". And when PrinterA is switched on, it is detected always as "lp1".
Hence, I did:
* store sihp1005.dl under a local usb mem (connected via usbhup): "/usb/2G_swap/php/sihp1005.dl"
* create my own lpfs.sh to inject the firmware if a printer appears under lp1 (see below)
* modify mdev.conf to call lpfs.sh only if activity is found on lp1.
* Save conf. If you do not, you will loose any change when NAS is reloaded.
------------mdev.conf----------
sd[a-z][0-9]* 0:0 660 */usr/share/snake/automount $MDEV $ACTION
lp0* 0:0 660 */usr/share/snake/setprinter $MDEV $ACTION
lp[2-9]]* 0:0 660 */usr/share/snake/setprinter $MDEV $ACTION
lp1* 0:0 660 */etc/lpfw.sh $MDEV $ACTION
-------------end mdev.conf script---------
------lpfw.conf--------------
#!/bin/sh
DEV=$1
ACTION=$2
#
# local firmware location
FIRMWARE="/usb/2G_swap/php/sihp1005.dl"
#
echo "Adding printer with setprinter $DEV $ACTION"
/usr/share/snake/setprinter $DEV $ACTION
echo "Printer added!"
sleep 10
echo "...esperamos 10 segundos..."
# these 10 secs are given to allow printer to init with
# original firmware before loading the new fireware
if [ "$ACTION" = "add" ]; then
echo "Adding a Printer via LPFW.SH. Action: $ACTION"
if [ "$DEV" = "lp1" ]; then
echo "Loading firmware for Laser HP on dev $DEV ..."
cat $FIRMWARE > /dev/$DEV
echo "firmware $FIRMWARE cargado!"
fi
fi
------------------end lpfw.sh script -------------
I hope that helps.
By the way, I am very upset with the NAS because of the frozen transfers (issue 11). No way to make it working normally over wifi. Even over cable, if transfers takes long, i suffer the same boring behaviour. If you know someone that fixed it (with wifi 11g) I will be very grateful if you could give me his contact (or ask him to contact me). I was not able to make it working neither using the RF filters, which seemed the final solution. Very boring...
Related
Tickets: #11
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: leoic... (code.google.com)@gmail.com
Hi all, comment #16 is also the right script for me (hp1020). No but. Working like a charm.
Thank you!