#! / bin / bash
..
# version 3.1 of March 6, 2016
#http: //help.ubuntu.ru/wiki/canon_capt
#http: //forum.ubuntu.ru/index.php? topic = 189049.0
..
# check for superuser
[$ USER! = 'Root'] && exec sudo "$ 0"
# the user under which we entered the system
LOGIN_USER = $ (logname)
[-z "$ LOGIN_USER"] && LOGIN_USER = $ (who | head -1 | awk '{print $ 1}')
# load the file containing the path to the desktop
if [-f ~ / .config / user-dirs.dirs]; then
source ~ / .config / user-dirs.dirs
else
XDG_DESKTOP_DIR = "$ HOME / Desktop"
fi
# driver version
DRIVER_VERSION = '2.70-1'
DRIVER_VERSION_COMMON = '3.20-1'
# links to driver packages
declare -A URL_DRIVER = ([amd64_common] = 'https: //drive.google.com/uc? export = download & confirm = no_antivirus & id = 0Byemcyi98JRjamV2YW12MnF6THc' \
[amd64_capt] = 'https: //drive.google.com/uc? export = download & confirm = no_antivirus & id = 0Byemcyi98JRjZlYwazNwdlNBY1U' \
[i386_common] = 'https: //drive.google.com/uc? export = download & confirm = no_antivirus & id = 0Byemcyi98JRjQy0yeGtMQWRUeEE' \
[i386_capt] = 'https: //drive.google.com/uc? export = download & confirm = no_antivirus & id = 0Byemcyi98JRjSDA3elJnRXJXZk0')
# links to the autoshutdowntool utility
declare -A URL_ASDT = ([amd64] = 'https: //drive.google.com/uc? export = download & confirm = no_antivirus & id = 0Byemcyi98JRjc0s2YlJVZ0xBckk' \
[i386] = 'https: //drive.google.com/uc? export = download & confirm = no_antivirus & id = 0Byemcyi98JRjdzFlWjVnbGpBMFU')
#correspondence of ppd files and printer models
declare -A LASERSHOT = ([LBP-810] = 1120 [LBP-1120] = 1120 [LBP-1210] = 1210 \
[LBP2900] = 2900 [LBP3000] = 3000 [LBP3010] = 3050 [LBP3018] = 3050 [LBP3050] = 3050 \
[LBP3100] = 3150 [LBP3108] = 3150 [LBP3150] = 3150 [LBP3200] = 3200 [LBP3210] = 3210 \
[LBP3250] = 3250 [LBP3300] = 3300 [LBP3310] = 3310 [LBP3500] = 3500 [LBP5000] = 5000 \
[LBP5050] = 5050 [LBP5100] = 5100 [LBP5300] = 5300 [LBP6000] = 6018 [LBP6018] = 6018 \
[LBP6020] = 6020 [LBP6020B] = 6020 [LBP6200] = 6200 [LBP6300n] = 6300n [LBP6300] = 6300 \
[LBP6310] = 6310 [LBP7010C] = 7018C [LBP7018C] = 7018C [LBP7200C] = 7200C [LBP7210C] = 7210C \
[LBP9100C] = 9100C [LBP9200C] = 9200C)
# sorted printer names
NAMESPRINTERS = $ (echo "$ {! LASERSHOT [@]}" | tr '"' \ n '| sort -n -k1.4)
# list of models that are supported by the auto-shutdown utility
declare -A ASDT_SUPPORTED_MODELS = ([LBP6020] = 'MTNA002001 MTNA999999' \
[LBP6020B] = 'MTMA002001 MTMA999999' [LBP6200] = 'MTPA00001 MTPA99999' \
[LBP6310] = 'MTLA002001 MTLA999999' [LBP7010C] = 'MTQA00001 MTQA99999' \
[LBP7018C] = 'MTRA00001 MTRA99999' [LBP7210C] = 'MTKA002001 MTKA999999')
# operating system architecture
if ["$ (uname -m)" == 'x86_64']; then
ARCH = 'amd64'
else
ARCH = 'i386'
fi
# define the initialization system
if [[$ (ps -p1 | grep systemd)]]; then
INIT_SYSTEM = 'systemd'
else
INIT_SYSTEM = 'upstart'
fi
# make the working directory where this script is located
cd "$ (dirname" $ 0 ")"
function valid_ip () {
local ip = $ 1
local stat = 1
if [[$ ip = ~ ^ [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \. [0-9] { 1,3} $]]; then
ip = ($ (echo "$ ip" | tr '.' ''))
[[$ {ip [0]} -le 255 && $ {ip [1]} -le 255 && $ {ip [2]} -le 255 && $ {ip [3]} -le 255]]
stat = $?
fi
return $ stat
}
function check_error () {
if [$ 2 -ne 0]; then
case $ 1 in
'WGET') echo "Error while downloading file $ 3"
[-n "$ 3"] && [-f "$ 3"] && rm "$ 3" ;;
'PACKAGE') echo "Error installing package $ 3" ;;
*) echo 'Error' ;;
esac
echo 'Press any key to exit'
read -s -n1
exit 1
fi
}
function canon_unistall () {
if [-f / usr / sbin / ccpdadmin]; then
installed_model = $ (ccpdadmin | grep LBP | awk '{print $ 3}')
if [-n "$ installed_model"]; then
echo "Found $ installed_model"
echo "Completion of captstatusui"
killall captstatusui 2> / dev / null
echo 'Stop the ccpd daemon'
service ccpd stop
echo 'Removing the printer from the ccpd configuration file of the daemon'
ccpdadmin -x $ installed_model
echo 'Removing a printer from CUPS'
lpadmin -x $ installed_model
fi
fi
echo 'Removing driver packages'
dpkg --purge cndrvcups-capt
dpkg --purge cndrvcups-common
echo 'Removing Unused Libraries and Packages'
apt-get-y autoremove
echo 'Deleting settings'
[-f /etc/init/ccpd-start.conf] && rm /etc/init/ccpd-start.conf
[-f /etc/udev/rules.d/85-canon-capt.rules] && rm /etc/udev/rules.d/85-canon-capt.rules
[-f "$ {XDG_DESKTOP_DIR} /captstatusui.desktop"] && rm "$ {XDG_DESKTOP_DIR} /captstatusui.desktop"
[-f / usr / bin / autoshutdowntool] && rm / usr / bin / autoshutdowntool
[$ INIT_SYSTEM == 'systemd'] && update-rc.d -f ccpd remove
echo 'Uninstall completed'
echo 'Press any key to exit'
read -s -n1
return 0
}
function canon_install () {
echo
PS3 = 'Select the printer. Enter the desired number and press Enter: '
select NAMEPRINTER in $ NAMESPRINTERS
do
[-n "$ NAMEPRINTER"] && break
done
echo "Printer selected: $ NAMEPRINTER"
echo
PS3 = 'How is the printer connected to the computer? Enter the desired number and press Enter: '
select CONECTION in 'Via the USB port connector' 'Via the LAN connector (LAN, NET)'
do
if ["$ REPLY" == "1"]; then
CONECTION = "usb"
while true
do
# Looking for a device connected to the USB port
NODE_DEVICE = $ (ls -1t / dev / usb / lp * 2> / dev / null | head -1)
if [-n "$ NODE_DEVICE"]; then
# define the serial number of the printer
PRINTER_SERIAL = $ (udevadm info --attribute-walk --name = $ NODE_DEVICE | sed '/./{H;$!d;};x;/ATTRS{product}=="Canon CAPT USB \ (Device \ | Printer \) "/! D; '| awk -F' == '' / ATTRS {serial} / {print $ 2} ')
# if the serial number is found, then the device found printer Canon
[-n "$ PRINTER_SERIAL"] && break
fi
echo -ne "Turn on the printer \ r"
sleep 2
done
PATH_DEVICE = "/ dev / canon $ NAMEPRINTER"
break
elif ["$ REPLY" == "2"]; then
CONECTION = "lan"
read -p 'Enter the IP address of the printer:' IP_ADDRES
until valid_ip "$ IP_ADDRES"
do
echo 'Invalid IP address format, enter four decimal numbers with'
echo -n 'from 0 to 255, separated by periods:'
read IP_ADDRES
done
PATH_DEVICE = "net: $ IP_ADDRES"
echo 'Turn on the printer and press any key'
read -s -n1
sleep 5
break
fi
done
echo 'Driver Installation'
COMMON_FILE = cndrvcups-common _ $ {DRIVER_VERSION_COMMON} _ $ {ARCH} .deb
CAPT_FILE = cndrvcups-capt _ $ {DRIVER_VERSION} _ $ {ARCH} .deb
if [! -f $ COMMON_FILE]; then
sudo -u $ LOGIN_USER wget -O $ COMMON_FILE $ {URL_DRIVER [$ {ARCH} _common]}
check_error WGET $? $ COMMON_FILE
fi
if [! -f $ CAPT_FILE]; then
sudo -u $ LOGIN_USER wget -O $ CAPT_FILE $ {URL_DRIVER [$ {ARCH} _capt]}
check_error WGET $? $ CAPT_FILE
fi
apt-get -y update
apt-get-y install libglade2-0
check_error PACKAGE $? libglade2-0
echo 'Installing the common module for the CUPS driver'
dpkg -i $ COMMON_FILE
check_error PACKAGE $? $ COMMON_FILE
echo 'Installing the printer driver module CAPT'
dpkg -i $ CAPT_FILE
check_error PACKAGE $? $ CAPT_FILE
# replacement of the contents of the file /etc/init.d/ccpd
echo '#! / bin / bash
# startup script for Canon Printer Daemon for CUPS (ccpd)
### BEGIN INIT INFO
# Provides: ccpd
# Required-Start: $ local_fs $ remote_fs $ syslog $ network $ named
# Should-Start: $ ALL
# Required-Stop: $ syslog $ remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start Canon Printer Daemon for CUPS
### END INIT INFO
DAEMON = / usr / sbin / ccpd
case $ 1 in
start)
start-stop-daemon -start -quiet -oknodo -exec $ {DAEMON}
;;;
stop)
start-stop-daemon -stop -quiet -oknodo -retry TERM / 30 / KILL / 5 --exec $ {DAEMON}
;;;
status)
echo "$ {DAEMON}:" $ (pidof $ {DAEMON})
;;;
restart)
while true
do
start-stop-daemon -stop -quiet -oknodo -retry TERM / 30 / KILL / 5 --exec $ {DAEMON}
start-stop-daemon -start -quiet -oknodo -exec $ {DAEMON}
for ((i = 1; i <= 5; i ++))
do
sleep 1
set - $ (pidof $ {DAEMON})
[-n "$ 1" -a -n "$ 2"] && exit 0
done
done
;;;
*)
echo "Usage: ccpd {start | stop | status | restart}"
exit 1
;;;
esac
exit 0 '> /etc/init.d/ccpd
# Installing utilities for managing AppArmor
apt-get-y install apparmor-utils
# Set in AppArmor profile in sparing mode for cupsd
aa-complain / usr / sbin / cupsd
echo 'Restart CUPS'
service cups restart
echo 'Installing 32-bit libraries required for'
echo '64-bit version of the printer driver '
if [$ ARCH == 'amd64']; then
apt-get -y install libatk1.0-0: i386 libcairo2: i386 libgtk2.0-0: i386 libpango1.0-0: i386 libstdc ++ 6: i386 libpopt0: i386 libxml2: i386 libc6: i386
check_error PACKAGE $?
fi
echo 'Installing the printer in CUPS'
/ usr / sbin / lpadmin -p $ NAMEPRINTER -P /usr/share/cups/model/CNCUPSLBP${LASERSHOT[$NAMEPRINTER]}CAPTK.ppd -v ccp: // localhost: 59687 -E
echo "Setting the printer to $ NAMEPRINTER, the default printer"
/ usr / sbin / lpadmin -d $ NAMEPRINTER
echo 'Registering the printer in the ccpd configuration file of the daemon'
/ usr / sbin / ccpdadmin -p $ NAMEPRINTER -o $ PATH_DEVICE
# Verifying the printer installation
installed_printer = $ (ccpdadmin | grep $ NAMEPRINTER | awk '{print $ 3}')
if [-n "$ installed_printer"]; then
if ["$ CONECTION" == "usb"]; then
echo 'Creating a rule for the printer'
# is a rule that provides an alternative name (a symbolic link) to our printer, so as not to depend on the changing values of lp0, lp1, ...
echo 'KERNEL == "lp [0-9] *", SUBSYSTEMS == "usb", ATTRS {serial} ==' $ PRINTER_SERIAL ', SYMLINK + = "canon' $ NAMEPRINTER '"'> / etc / udev / rules .d / 85-canon-capt.rules
# update the rules
udevadm control --reload-rules
# checking the created rule
until [-e $ PATH_DEVICE]
do
echo -ne "Turn off the printer, wait 2 seconds, then turn on the printer \ r"
sleep 2
done
fi
echo -e "\ e [2Kccpd start"
service ccpd restart
# autoload ccpd
if [$ INIT_SYSTEM == 'systemd']; then
update-rc.d ccpd defaults
else
echo 'description "Canon Printer Daemon for CUPS (ccpd)"
author "LinuxMania <customer@linuxmania.jp>"
start on (started cups and runlevel [2345])
stop on runlevel [016]
expect fork
respawn
exec / usr / sbin / ccpd start '> /etc/init/ccpd-start.conf
fi
# create the start button captstatusui on the desktop
echo '#! / usr / bin / env xdg-open
[Desktop Entry]
Version = 1.0
Name = captstatusui
GenericName = Status monitor for Canon CAPT Printer
Exec = captstatusui -P '$ NAMEPRINTER'
Terminal = false
Type = Application
Icon = / usr / share / icons / Humanity / devices / 48 / printer.svg '> "$ {XDG_DESKTOP_DIR} /captstatusui.desktop"
chmod 775 "$ {XDG_DESKTOP_DIR} /captstatusui.desktop"
chown $ LOGIN_USER: $ LOGIN_USER "$ {XDG_DESKTOP_DIR} /captstatusui.desktop"
# install the auto-shutdown utility for supported printer models
if [["$ {! ASDT_SUPPORTED_MODELS [@]}" = ~ "$ NAMEPRINTER"]]; then
SERIALRANGE = ($ {ASDT_SUPPORTED_MODELS [$ NAMEPRINTER]})
SERIALMIN = $ {SERIALRANGE [0]}
SERIALMAX = $ {SERIALRANGE [1]}
if [[$ {# PRINTER_SERIAL} -eq $ {# SERIALMIN} && $ PRINTER_SERIAL> $ SERIALMIN && $ PRINTER_SERIAL <$ SERIALMAX || $ PRINTER_SERIAL == $ SERIALMIN || $ PRINTER_SERIAL == $ SERIALMAX]]; then
echo "Installing the autoshutdowntool utility"
ASDT_FILE = autoshutdowntool_1.00-1 _ $ {ARCH} _deb.tar.gz
if [! -f $ ASDT_FILE]; then
wget -O $ ASDT_FILE $ {URL_ASDT [$ ARCH]}
check_error WGET $? $ ASDT_FILE
fi
tar --gzip --extract --file = $ ASDT_FILE --totals --directory = / usr / bin
fi
fi
# start captstatusui
if [[-n "$ DISPLAY"]]; then
sudo -u $ LOGIN_USER nohup captstatusui -P $ NAMEPRINTER> / dev / null 2> & 1 &
sleep 5
fi
echo 'The installation is complete. Press any key to exit '
read -s -n1
exit 0
else
echo "The $ NAMEPRINTER printer is not installed"
echo 'Press any key to exit'
read -s -n1
exit 1
fi
}
function canon_update () {
if [-f / usr / sbin / ccpdadmin]; then
NAMEPRINTER = $ (ccpdadmin | grep LBP | awk '{print $ 3}')
if [-n "$ NAMEPRINTER"]; then
echo "$ NAMEPRINTER printer found"
SETUP_DRIVER_VERSION = $ (dpkg -l | grep cndrvcups-capt | awk '{print $ 3}')
echo "Installed driver version: $ SETUP_DRIVER_VERSION"
echo "The driver version to be installed: $ DRIVER_VERSION"
dpkg --compare-versions $ DRIVER_VERSION lt $ SETUP_DRIVER_VERSION
if [$? -eq 0]; then
echo 'The version of the driver that is installed is less than the version of the driver that is already installed.
The update will not continue. Press any key to exit '
read -s -n1
exit 1
fi
echo "Completion of captstatusui"
killall captstatusui 2> / dev / null
echo 'Stop the ccpd daemon'
service ccpd stop
echo 'Removing a printer from CUPS'
lpadmin -x $ NAMEPRINTER
# driver update ... '
COMMON_FILE = cndrvcups-common _ $ {DRIVER_VERSION_COMMON} _ $ {ARCH} .deb
CAPT_FILE = cndrvcups-capt _ $ {DRIVER_VERSION} _ $ {ARCH} .deb
if [! -f $ COMMON_FILE]; then
sudo -u $ LOGIN_USER wget -O $ COMMON_FILE $ {URL_DRIVER [$ {ARCH} _common]}
check_error WGET $? $ COMMON_FILE
fi
if [! -f $ CAPT_FILE]; then
sudo -u $ LOGIN_USER wget -O $ CAPT_FILE $ {URL_DRIVER [$ {ARCH} _capt]}
check_error WGET $? $ CAPT_FILE
fi
echo 'Updating the Common Module for the CUPS Driver'
dpkg -i $ COMMON_FILE
check_error PACKAGE $? $ COMMON_FILE
echo 'Updating the printer driver module CAPT'
dpkg -i $ CAPT_FILE
check_error PACKAGE $? $ CAPT_FILE
echo 'Restart CUPS'
service cups restart
echo 'Installing the printer in CUPS'
/ usr / sbin / lpadmin -p $ NAMEPRINTER -P /usr/share/cups/model/CNCUPSLBP${LASERSHOT[$NAMEPRINTER]}CAPTK.ppd -v ccp: // localhost: 59687 -E
echo "Setting the printer to $ NAMEPRINTER, the default printer"
/ usr / sbin / lpadmin -d $ NAMEPRINTER
if [[-n "$ DISPLAY"]]; then
echo 'Running captstatusui'
while true
do
sleep 1
set - $ (pidof / usr / sbin / ccpd)
if [-n "$ 1" -a -n "$ 2"]; then
sudo -u $ LOGIN_USER nohup captstatusui -P $ NAMEPRINTER> / dev / null 2> & 1 &
sleep 5
break
fi
done
fi
echo "The driver has been updated, press any key to exit"
read -s -n1
exit 0
fi
fi
echo "Canon LBP series printers are not installed"
echo 'Press any key to exit'
read -s -n1
exit 1
}
function canon_help {
clear
echo 'Installation notes
If you have already done anything to install the printer in this series,
in the current system, then before starting the installation, you should cancel these actions.
If there are no driver packages, they are automatically downloaded from the Internet
in the script folder. Printers LBP-810, LBP-1210 connect through the USB port connector
To update the driver, first uninstall the old version via the script, then
install a new one also through the script.
Notes on printing problems
If the printer stops printing, run captstatusui via the start button
on the desktop or in the terminal with the command: captstatusui -P <printer_name>
The captstatusui window displays a message about the current status of the printer, if
an error occurs, its description is displayed. Here you can try pressing the button
"Resume Job" to continue printing or "Cancel Job" button to cancel the job.
If this does not help, then run the script canon_restart.sh
printer configuration command: cngplp
additional settings, command: captstatusui -P <printer_name>
Auto-off setting (not for all models): autoshutdowntool
Comments and errors write to the mail coden@mail.ru or
on the forum http://forum.ubuntu.ru/index.php?topic=189049.0
To log the installation process, run the script like this:
logsave log.txt ./canon_lbp_setup.sh
'
}
clear
echo 'Installing the Linux CAPT Printer Driver v' $ {DRIVER_VERSION} 'driver for Canon LBP printers
on Ubuntu 12.04, 12.10, 13.04, 13.10, 14.04, 14.10, 15.04, 15.10 of the 32-bit and 64-bit architecture
Supported printers: '
echo "$ NAMESPRINTERS" | sed ': a; / $ / N; s / \ n /, /; ta '| fold -s
PS3 = 'Select action. Enter the desired number and press Enter: '
select opt in 'Install' 'Uninstall' 'Help' 'Exit'
do
if ["$ opt" == 'Installation']; then
canon_install
break
elif ["$ opt" == 'Deleting']; then
canon_unistall
break
# elif ["$ opt" == 'Update']; then
# canon_update
# break
elif ["$ opt" == 'Help']; then
canon_help
elif ["$ opt" == 'Quit']; then
break
fi
done
mohdisham
Tuesday, February 13, 2018
Linuxmint 64bit vs cannon lbp2900b
Sunday, January 01, 2017
error at repair filesystem of /data and mount /data
problem 1: error while wiping /data due to mount error
issue: due corrupt of /data partition
fix1: fastboot erase userdata
fix2: change file system to extfs1 or extfs2 or extfs3 or exts4 or FAT
whichever works for data wipe
fix3 : Boot into TWRP or any other similar recovery.
Enter adb shell in a terminal on your PC while running recovery on the phone.
Enter e2fsck /dev/block/platform/msm_sdcc.1/by-name/persist
Error executing updater binary in zip
problem : Error executing updater binary in zip
fix: update/change recovery
I fixed it by updating recovery from
twrp-2.8.7.0-ghost.img to twrp-2.8.7.2-ghost.img
on bootloader screen type
fastboot flash recovery twrp-2.8.7.2-ghost.img on terminal
Sunday, December 04, 2016
Ubuntu Touch as a daily phone
I have been using Ubuntu Touch on my Nexus 4 for a year now, For an Android alternative OS for smartphones it has come a long way compared to other options like Firefox, Sailfish, Tizen, Bada, Meego etc...
Now that I have used for about a year I could vouch that it can be used as a daily driver if all you do is Call, Msg, Listen to music and watch videos... But that's not all we do is it.... Ubuntu touch even though has been successful compared to others it's still has a lot to catch up to Android to satisfy, and hook general public rather than just enthusiast like me....
Ubuntu touch is lacking in apps availability, operation speed. We know what our smartphones are capable of... But don't find Ubuntu touch delivering it....
Saturday, December 03, 2016
Install ScreenFetch on Linuxmint
sudo apt-get install lsb-release scrot
2. Install screenfetch in Linux
mkdir ~/screenfetch
cd ~/screenftetcht
wget -O screenfetch 'https://raw.github.com/KittyKatt/screenFetch/master/screenfetch-dev'
chmod +x screenfetch
sudo cp screenfetch /usr/local/bin
Thursday, March 10, 2016
How to get a list of all valid ip address in a local network?
sudo apt-get install nmapthen
nmap -sP 192.168.1.*This does a simple ping scan in the entire subnet to see which all host's are online.
Wednesday, March 09, 2016
Wifi File transfer from ubuntu touch to android/pc
Requirements
Ubuntu touch - needs the wifitransfer app by Stuart langgridge
Android - needs any file managers with FTP support
Connect both phones via wifi tethering
On Ubuntu touch
Turn on wifitransfer
Which will provide
IP address
Port
Username
Password
On Android create FTP server
Provide details given on Ubuntu touch and connect
Copy files to the FTP folder
All files transferred to Ubuntu touch will be stored in .local/share/wifitransfer file
Similar all files copied to .local/share/wifitransfer will be available on Android FTP server
Linuxmint 64bit vs cannon lbp2900b
i have no idea about other printers but cannon lbp2900b and my linuxmint 64 bit never jelled together after trying out most of the solutions...
-
device : ghost problem 1: error while wiping /data due to mount error issue: due corrupt of /data partition fix1: fastboot erase userdat...
-
Step to install LAMP Type the following command in the terminal 1. sudo apt-get install tasksel 2. sudo tasksel install lamp-server No...
-
i have no idea about other printers but cannon lbp2900b and my linuxmint 64 bit never jelled together after trying out most of the solutions...