Jump to content

mabam

Members
  • Posts

    13
  • Joined

  • Last visited

Everything posted by mabam

  1. Based on https://unix.stackexchange.com/questions/63293/blocking-kernel-updates-with-dpkg, I have performed the following steps: dpkg -l | grep linux-image which returned hi linux-image-sun7i 5.27 armhf Linux kernel, version 3.4.113-sun7i followed by: echo linux-image-sun7i hold | sudo dpkg --set-selections After I continued with upgrading as described in my initial post, the login screen still asked me to restart because the kernel was updated. But this time AppleTalk still worked after restarting. Glad to have found a solution!
  2. Hello! In order to compile software on my Banana Pi running Armbian 5.27 Debian 8, I started off uncommenting the "# deb-src" lines in /etc/apt/sources.list and then ran apt-get update and apt-get upgrade. The start screen in the shell would then ask me to reboot as the kernel was updated. But after the reboot there was no AppleTalk anymore to serve my old devices. Compiling a newer Armbian with an up-to-date version of Debian is of no use to me as I run software (A2SERVER) that is incompatible with newer systems. So how can I upgrade my system without loosing AppleTalk (which I configured as a kernel module when compiling two years ago)? EDIT: I had done this on a spare SD-card onto which I have restored the old state from a backup. So I can start over.
  3. As I didn't know how to fix this problem, I shared the printer as raw printer since two years ago when I set up this system. But now I want to have the Banana Pi share it via AirPrint in order to print from my iPhone. This only works if the PPD is handled by the CUPS server rather than sharing it raw and assigning the PPD at the client side. It turned out to be a bug. The fix can be found here: https://bugzilla.redhat.com/show_bug.cgi?id=1304869#c12 . Adding "Option pdftops-renderer pdftops" to /etc/cups/printers.conf produces a PostScript file compatible with a PostScript Level 2 printer like the LaserWriter 4/600 PS. I've just successfully printed a test page from within CUPS. EDIT: The only difference I noticed so far is that colour conversion to greyscale is a little darker. So when done at the server side there is a different colour profile being used. EDIT 2: Fixed as of CUPS Filters v1.21.6: https://github.com/OpenPrinting/cups-filters/issues/76.
  4. Thanks! Things have been sorted out mainly by others. My main contribution was the time it took to gather the required bits of information. Would indeed be great if someone could make the on-board ethernet ports of these devices work for AppleTalk. In my case the adapter would fit perfectly into the housing, as I used the one from my broken Synology NAS. See pics here: http://www.emaculation.com/forum/viewtopic.php?f=3&p=56492&sid=d0c2882c4f33cdd8930e5f1f01b7b0c5#p55035
  5. I've written a detailed guide on how to set up a Banana Pi with AppleTalk: http://www.emaculation.com/doku.php/appletalk_printserver_macos_and_osx It also contains a link to an updated version of the PAP backend.
  6. Last time I wrote something here I was still working with VM's and testing software components I needed for my system. I have then bought the hardware, compiled Armbian with AppleTalk, and am now finishing the software configuration which made me trying your PAP backend again. In post 31 I pasted the command-line containing the command with the output underneath. I did not paste the new command-line appearing afterwards, but should have actually done that: … LaserWriter 4/600 PSuser1@a2server:~$ After appending '>> test' to the command in order to save the output to a file, this is what it looked like in VIM: LaserWriter 4/600 PS ~ ~ "test" [noeol] 1L, 20C 1,1 All I googled for '[noeol]' and in a forum I found a fix for the missing 'end of line': "sed -e '$a\'" adds a line end in case it's missing. Maybe both sed commands could be merged into one. But I don't know how to do that (sed is fun, but way above me …). The whole command now reads: echo -e "%%?BeginFeatureQuery: *Product\nstatusdict begin\nproduct print\nend\n%%?EndFeatureQuery: Unknown\n%%EOF" | /usr/bin/timeout -s HUP 15 /usr/local/bin/pap -p "LaserWriter 4/600 PS:LaserWriter@A2SERVER" | sed -e '$a\' | sed 's|^\"(||;s|)\"$||;' With this fix it is now possible to create the printer from a different computer via the web interface of CUPS by clicking on 'Find New Printers' and assigning the corresponding PPD there manually. But printing from that computer to the shared LW 4/600 PS produces an empty page. However, if I set it up as raw printer and assign the PPD later in OS X, it prints fine. Is it possible to let CUPS choose the correct PPD automatically? I had copied it to /usr/share/ppd/cupsfilters/ on the BPi and restarted CUPS before adding the printer, so it appeared on the list in the CUPS web interface under manufacturer 'Apple'. And how can I find out why, when assigning the PPD on the server side, the printer only produces white pages?
  7. I figured I have to put the DeviceURI like this: LaserWriter%3aLaserWriter%204%2f600%20PS%40A2SERVER. Just 'LaserWriter%204%2f600%20PS' would probably have been enough though. For now I installed it as RAW printer, so the URI is not relevant for PPD recognition. Actually, the printer appears in any zone. If I add '*' as zone to netatalk, I see the printer in the network twice – once for every zone. So 'A2SERVER' is actually fine. My bad. For me the papwrap.pl backend mentioned earlier in this thread didn't work either. But I found another one with some description here that does the job. Download over here. As my printer's name is "LaserWriter 4/600 PS", I had to add URL decoding for the slash to the PAP backend (space, colon and @ were already covered). So I added: | sed -e 's/\%2f///' \ It took me a while to realize that I had to quote the slash with a backslash (I read some explanation online on what 'sed' is used for while trying to understand some of the code of your backend, actually. And that made me realise that in what I had added to the other backend a backslash was missing): | sed -e 's/\%2f/\//' \ And suddenly I could print! That would be great! With the DeviceLookup, your backend is much more automated. I'd really prefer to use that one. Once configured, it should make any PAP printer in the network just show up in the CUPS web interface. This is also important because I want to write a guide for this thing and publish it at emaculation.com. Also on other websites, every now and then there is someone asking how to connect to his AppleTalk printer (well, like the one who started this thread). Especially since Apple removed PAP from Snow Leopard a few years ago. For a while I used SheepShaver with an ethernet bridge for AppleTalk as an LPR print server using Print66. But I had to restart it every time my machine woke up from sleep and it seemed to interfere with Parallels Desktop. I'm sure part of the stuff in this post is not new to you. I explanined it in case someone googling for a solution could find what he needs to know. You wrote that it will take a while until you might find the time to look into the issues with your backend. That's understandable. Once I have written the mentioned guide I will post a link here. I will now buy the hardware for my file and printer server (up 'til now I've worked in a VM for testing). Vielen Dank für deine Hilfe und die Zeit, die du dir genommen hast!
  8. I did now. But doesn't work. That URI is what entering '/usr/lib/cups/backend/pap' returned. But A2SERVER is the machine I am trying to configure as server, NOT the AppleTalk zone. I'm using the standard zone, so it should be pap://*/LaserWriter%204%2f600%20PS/LaserWriter – but that doesn't work either. I'm sure the printer is in the standard zone. 'Cause that's where I can reach it from an old Mac speaking AppleTalk/PAP. If I understand correctly, the URI that '/usr/lib/cups/backend/pap' returnes is wrong. But why? Do you have any idea?
  9. That's okay. I'm happy to try things. By myself I just wouldn't know where to look. I have now set FullDeviceDiscovery=FALSE. The PPD from openprinting.org wouldn't word for automatic detection. It contains 'LaserWriter 4/600‘ as printer model. 'PS' is missing. It is a PostScript Level 2 printer, so foomatic won't be needed anyway. I have copied the PPD from OS X over to /etc/cups/ppd/. Either RAW or assigning a PPD file would be fine. But when I go to 'Administration' -> 'Add Printer' in CUPS' web interface, I get "Unable to add printer: Forbidden". So following the guide at http://www.topoftheworld.org/linux/laserwriterIIg_cups.htm I created 'printers.conf' at /etc/cups/ and inserted <DefaultPrinter LaserWriter_4_600_PS> Info LaserWriter_4_600_PS DeviceURI pap://LaserWriter%204%2f600%20PS/ State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer> After restarting CUPS it recognized the correct PPD and automatically changed printers.conf. I could choose the printer in OS X, but when trying to print nothing arrived at the printer. I wasn't sure about the slash behind 'DeviceURI pap://LaserWriter%204%2f600%20PS'. I tried both, with the slash and without it. But nothing worked. I can see the printer in CUPS' web interface. But it says: "Unable to get printer status for ":@LaserWriter 4/600 PS""
  10. You mean the script at /usr/lib/cups/backend/pap? It's the one I've downloaded from your website: http://kaiser-edv.rexdev.de/de/tipps-und-tricks/cups/appletalk-backend.html. (You had referred to your site in post #8 a few months ago.) With a few amendments as discussed in this thread since post #25. I've now changed it to '#!/bin/bash'. The 'OffendingCommand' is gone: $ /usr/lib/cups/backend/pap network pap "Unknown" "AppleTalk Devices via pap" %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: busy; source: LocalTalk ]%% %%[ status: busy; source: LocalTalk ]%% %%[ status: busy; source: LocalTalk ]%% network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "LaserWriter 4/600 PS" "LaserWriter 4/600 PS@A2SERVER (pap)" The response to '$ /bin/bash -x /usr/lib/cups/backend/pap' didn't change. As it says "FeatureQuery" here, I suppose it should return somewhat more detailed information and not just the status? Could that be related to the fact that I haven't installed a PPD yet? (I did not yet sort out how to do that …)
  11. The line now reads: DeviceLookup=`echo -e "%%?BeginFeatureQuery: *Product\nstatusdict begin\nproduct print\nend\n%%?EndFeatureQuery: Unknown\n%%EOF" | ${TimeoutDir}/timeout -s HUP 15 ${NetatalkBinDir}/pap -p "$1:$2@$3" | sed 's|^\"(||;s|)\"$||;'` Is the following output as it is supposed to be? $ /usr/lib/cups/backend/pap network pap "Unknown" "AppleTalk Devices via pap" %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: busy; source: LocalTalk ]%% %%[ status: busy; source: LocalTalk ]%% %%[ status: busy; source: LocalTalk ]%% %%[ status: busy; source: LocalTalk ]%% -e network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "%%[ Error: undefined; OffendingCommand: -e ]%% %%[ Flushing: rest of job (to end-of-file) will be ignored ]%%" "LaserWriter 4/600 PS@A2SERVER (pap)" $ /bin/bash -x /usr/lib/cups/backend/pap + devicetypes=LaserWriter + formfeed=FALSE + NetatalkBinDir=/usr/local/bin + TimeoutDir=/usr/bin + FullDeviceDiscovery=TRUE + ExaktPageCount=FALSE + main + CollectAccountingData ++ DecodeDeviceURI ++ perl -ple 's/%([0-9A-Fa-f]{2})/chr(hex($1))/eg' ++ awk -F/ '{print $4 ":" $5 "@" $3}' ++ echo + PrinterName=:@ + Owner= + Title= + NeededCopies= + eval ParseCUPSOptions ++ ParseCUPSOptions ++ i='com\.apple\.print\.' ++ '[' 0 -ge 1 ']' + PrepareRequest ++ basename /usr/lib/cups/backend/pap + protocol=pap + case `uname -s` in ++ uname -s + '[' '!' -x /usr/local/bin/papstatus ']' + ZoneLookup=/usr/local/bin/getzones + ATPErrMsg='atp_rresp\:\ Connection\ timed\ out' + TotalPages=1 + IFS=' ' + test 0 = 0 + echo 'network pap "Unknown" "AppleTalk Devices via pap"' network pap "Unknown" "AppleTalk Devices via pap" + uniq + sort + LookupDevices ++ GetZoneList ++ eval /usr/local/bin/getzones +++ /usr/local/bin/getzones ++ '[' 0 -eq 0 ']' ++ sed 's|atp_rresp\:\ Connection\ timed\ out|*|;' ++ eval /usr/local/bin/getzones + zonelist='+++ /usr/local/bin/getzones A2SERVER' + OIFS=' ' + IFS=: + set LaserWriter + IFS=' ' + for devicetype in '$@' + read zone + echo '+++ /usr/local/bin/getzones A2SERVER' + read zone + read zone + read nbpentry + NBPLookup =:LaserWriter@A2SERVER + read nbpentry + perl -ne 'chomp; next if /^$/; m|^\s+(.+)\s+\d+\.\d+:|; my $entry = $1; $entry =~ s/\s+$//; print "$entry\n"' + NBPLookup '=:LaserWriter@+++ /usr/local/bin/getzones' + /usr/local/bin/nbplkup =:LaserWriter@A2SERVER + perl -ne 'chomp; next if /^$/; m|^\s+(.+)\s+\d+\.\d+:|; my $entry = $1; $entry =~ s/\s+$//; print "$entry\n"' + /usr/local/bin/nbplkup '=:LaserWriter@+++ /usr/local/bin/getzones' + read nbpentry + GetPrinterProperties 'LaserWriter 4/600 PS:LaserWriter' A2SERVER pap ++ awk -F: '{print $1}' ++ echo 'LaserWriter 4/600 PS:LaserWriter' + name='LaserWriter 4/600 PS' ++ awk -F: '{print $2}' ++ echo 'LaserWriter 4/600 PS:LaserWriter' + type=LaserWriter ++ CheckProductName 'LaserWriter 4/600 PS' LaserWriter A2SERVER ++ GuessedDeviceType=Unknown ++ '[' LaserWriter = LaserWriter -a TRUE = TRUE ']' ++ /usr/local/bin/papstatus -p 'LaserWriter 4/600 PS:LaserWriter@A2SERVER' +++ sed 's|^\"(||;s|)\"$||;' +++ /usr/bin/timeout -s HUP 15 /usr/local/bin/pap -p 'LaserWriter 4/600 PS:LaserWriter@A2SERVER' +++ echo -e '%%?BeginFeatureQuery: *Product\nstatusdict begin\nproduct print\nend\n%%?EndFeatureQuery: Unknown\n%%EOF' %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: idle ]%% %%[ status: busy; source: LocalTalk ]%% %%[ status: busy; source: LocalTalk ]%% %%[ status: busy; source: LocalTalk ]%% ++ DeviceLookup='LaserWriter 4/600 PS' ++ '[' -n 'LaserWriter 4/600 PS' ']' ++ GuessedDeviceType='LaserWriter 4/600 PS' ++ echo 'LaserWriter 4/600 PS' + model='LaserWriter 4/600 PS' ++ EncodeDeviceURI A2SERVER ++ perl -ple 's|([^\w=\-:@])|sprintf( "%%%02x", ord( $1))|ge' ++ echo A2SERVER ++ EncodeDeviceURI 'LaserWriter 4/600 PS' ++ perl -ple 's|([^\w=\-:@])|sprintf( "%%%02x", ord( $1))|ge' ++ echo 'LaserWriter 4/600 PS' ++ EncodeDeviceURI LaserWriter ++ perl -ple 's|([^\w=\-:@])|sprintf( "%%%02x", ord( $1))|ge' ++ echo LaserWriter + echo -e 'network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "LaserWriter 4/600 PS" "LaserWriter 4/600 PS@A2SERVER (pap)"' network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "LaserWriter 4/600 PS" "LaserWriter 4/600 PS@A2SERVER (pap)" + exit 0
  12. Under the line "NetatalkBinDir=/usr/local/bin" I have added "TimeoutDir=/usr/bin" and changed "${NetatalkBinDir}/timeout'" to "${TimeoutDir}/timeout'" in the appropriate line. Now it says: $ /usr/lib/cups/backend/pap network pap "Unknown" "AppleTalk Devices via pap" /usr/bin/timeout: failed to run command `--': No such file or directory -e network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "Unknown" "LaserWriter 4/600 PS@A2SERVER (pap)" "/bin/bash -x /usr/lib/cups/backend/pap" returns: $ /bin/bash -x /usr/lib/cups/backend/pap + devicetypes=LaserWriter + formfeed=FALSE + NetatalkBinDir=/usr/local/bin + TimeoutDir=/usr/bin + FullDeviceDiscovery=TRUE + ExaktPageCount=FALSE + main + CollectAccountingData ++ DecodeDeviceURI ++ perl -ple 's/%([0-9A-Fa-f]{2})/chr(hex($1))/eg' ++ awk -F/ '{print $4 ":" $5 "@" $3}' ++ echo + PrinterName=:@ + Owner= + Title= + NeededCopies= + eval ParseCUPSOptions ++ ParseCUPSOptions ++ i='com\.apple\.print\.' ++ '[' 0 -ge 1 ']' + PrepareRequest ++ basename /usr/lib/cups/backend/pap + protocol=pap + case `uname -s` in ++ uname -s + '[' '!' -x /usr/local/bin/papstatus ']' + ZoneLookup=/usr/local/bin/getzones + ATPErrMsg='atp_rresp\:\ Connection\ timed\ out' + TotalPages=1 + IFS=' ' + test 0 = 0 + echo 'network pap "Unknown" "AppleTalk Devices via pap"' network pap "Unknown" "AppleTalk Devices via pap" + uniq + sort + LookupDevices ++ GetZoneList ++ eval /usr/local/bin/getzones +++ /usr/local/bin/getzones ++ '[' 0 -eq 0 ']' ++ sed 's|atp_rresp\:\ Connection\ timed\ out|*|;' ++ eval /usr/local/bin/getzones + zonelist='+++ /usr/local/bin/getzones A2SERVER' + OIFS=' ' + IFS=: + set LaserWriter + IFS=' ' + for devicetype in '$@' + read zone + echo '+++ /usr/local/bin/getzones A2SERVER' + read zone + read zone + read nbpentry + NBPLookup =:LaserWriter@A2SERVER + read nbpentry + perl -ne 'chomp; next if /^$/; m|^\s+(.+)\s+\d+\.\d+:|; my $entry = $1; $entry =~ s/\s+$//; print "$entry\n"' + NBPLookup '=:LaserWriter@+++ /usr/local/bin/getzones' + /usr/local/bin/nbplkup =:LaserWriter@A2SERVER + perl -ne 'chomp; next if /^$/; m|^\s+(.+)\s+\d+\.\d+:|; my $entry = $1; $entry =~ s/\s+$//; print "$entry\n"' + /usr/local/bin/nbplkup '=:LaserWriter@+++ /usr/local/bin/getzones' + read nbpentry + GetPrinterProperties 'LaserWriter 4/600 PS:LaserWriter' A2SERVER pap ++ awk -F: '{print $1}' ++ echo 'LaserWriter 4/600 PS:LaserWriter' + name='LaserWriter 4/600 PS' ++ awk -F: '{print $2}' ++ echo 'LaserWriter 4/600 PS:LaserWriter' + type=LaserWriter ++ CheckProductName 'LaserWriter 4/600 PS' LaserWriter A2SERVER ++ GuessedDeviceType=Unknown ++ '[' LaserWriter = LaserWriter -a TRUE = TRUE ']' ++ /usr/local/bin/papstatus -p 'LaserWriter 4/600 PS:LaserWriter@A2SERVER' +++ sed 's|^\"(||;s|)\"$||;' +++ /usr/bin/timeout -s HUP 15 -- /usr/local/bin/pap -p 'LaserWriter 4/600 PS:LaserWriter@A2SERVER' +++ echo -e '%%?BeginFeatureQuery: *Product\nstatusdict begin\nproduct print\nend\n%%?EndFeatureQuery: Unknown\n%%EOF' /usr/bin/timeout: failed to run command `--': No such file or directory ++ DeviceLookup= ++ '[' -n '' ']' ++ echo Unknown + model=Unknown ++ EncodeDeviceURI A2SERVER ++ perl -ple 's|([^\w=\-:@])|sprintf( "%%%02x", ord( $1))|ge' ++ echo A2SERVER ++ EncodeDeviceURI 'LaserWriter 4/600 PS' ++ perl -ple 's|([^\w=\-:@])|sprintf( "%%%02x", ord( $1))|ge' ++ echo 'LaserWriter 4/600 PS' ++ EncodeDeviceURI LaserWriter ++ perl -ple 's|([^\w=\-:@])|sprintf( "%%%02x", ord( $1))|ge' ++ echo LaserWriter + echo -e 'network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "Unknown" "LaserWriter 4/600 PS@A2SERVER (pap)"' network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "Unknown" "LaserWriter 4/600 PS@A2SERVER (pap)" + exit 0
  13. I have the same printer (LW 4/600 PS) and am trying the same thing. Except I have never done something like this before and barely know what I'm doing. At first I got an error running your command after installing your pap backend. After amending 'pap' to reflect my netatalk installation path (NetatalkBinDir=/usr/local/bin) the error disappeared. Your backend says: $ sudo /usr/lib/cups/backend/pap network pap "Unknown" "AppleTalk Devices via pap" /usr/lib/cups/backend/pap: 1: /usr/lib/cups/backend/pap: /usr/local/bin/timeout: not found -e network pap://A2SERVER/LaserWriter%204%2f600%20PS/LaserWriter "Unknown" "LaserWriter 4/600 PS@A2SERVER (pap)" papwrap.pl says: $ sudo /usr/lib/cups/backend/pap network pap://LaserWriter%204%2f600%20PS "Unknown" "PAP Printer 'LaserWriter 4/600 PS'" network pap "Unknown" "Macintosh-compatible Printer via PAP" I don't know what that means and which way to go. Anyone who is willing to help and possibly answer 'stupid' questions as they arise?
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines