トップ 最新 追記

Masa's blog

検索キーワード:

2020年08月01日 Brother PRIVIO DCP-J552N with Slackware64-14.2 [長年日記]

_ Brother PRIVIO DCP-J552N with Slackware64-14.2

家のDCP-J552Nは無線接続で利用している(IP=192.168.0.52)。

$ host dcpj552n
dcpj552n.artie.or.jp has address 192.168.0.52

Install printer driver

プリンタードライバーのインストール

dcpj552nlpr-3.0.0-1.i386.rpmをダウンロードし、root権限でrpmからtgzに変換する。

# rpm2tgz dcpj552nlpr-3.0.0-1.i386.rpm

dcpj552nlpr-3.0.0-1.i386.tgzをインストールする。

# installpkg dcpj552nlpr-3.0.0-1.i386.tgz

/opt/brother/Printers/dcpj552n/inf/brdcpj552nrcを編集し、既定の用紙タイプをA4に変更する。

*** /opt/brother/Printers/dcpj552n/inf/brdcpj552nrc.ORG    2020-07-26 15:19:23.953998715 +0900
--- /opt/brother/Printers/dcpj552n/inf/brdcpj552nrc        2020-07-26 23:31:06.169810664 +0900
***************
*** 3,9 ****
  BRResolution=600
  BResolution=PlainNormal
  BiDirPrint=ON
! PaperType=Letter
  PaperThick=Regular
  ColorOrMono=Color
  ColorMatch=Vivid
--- 3,9 ----
  BRResolution=600
  BResolution=PlainNormal
  BiDirPrint=ON
! PaperType=A4
  PaperThick=Regular
  ColorOrMono=Color
  ColorMatch=Vivid

/opt/brother/Printers/dcpj552n/lpd/filterdcpj552nを編集し、日本語対応のa2psを利用するように変更する。

*** /opt/brother/Printers/dcpj552n/lpd/filterdcpj552n.ORG  2020-07-26 14:57:13.307761817 +0900
--- /opt/brother/Printers/dcpj552n/lpd/filterdcpj552n      2020-07-26 23:44:28.009693405 +0900
***************
*** 77,84 ****
                rm -f $PS_TEMP
                ;;
        * )
!               A2PS_OP="--output=- -q -1 --no-header --borders no"
!               eval cat $INPUT_TEMP | a2ps $A2PS_OP | $PSCONV $PSCONV_OP | $BRCONV $BRCONV_OP
                RET=$?
                ;;
  esac
--- 77,86 ----
                rm -f $PS_TEMP
                ;;
        * )
! ##            A2PS_OP="--output=- -q -1 --no-header --borders no"
! ##            eval cat $INPUT_TEMP | a2ps $A2PS_OP | $PSCONV $PSCONV_OP | $BRCONV $BRCONV_OP
!               A2PS_OP=""
!               eval cat $INPUT_TEMP | /usr/local/bin/a2ps-j $A2PS_OP | $PSCONV $PSCONV_OP | $BRCONV $BRCONV_OP
                RET=$?
                ;;
  esac

a2ps.pl-1.45と日本語 UTF-8 パッチのインストール

a2ps Japanese UTF-8 patch (日本語 UTF-8 パッチ): 十四松のブログからありがたくダウンロードしインストールしa2ps-jにリンクを張る。

# cd /usr/local/bin/ && ln -s a2ps.pl-1.45 a2ps-j

/usr/local/etc/printcap for LPRng

LPRng用のprintcapを編集する。

.common:
   :sd=/var/spool/lpd/%P
   :sh:mx=0:mc=0
#
lp:rm=dcpj552n:\
        :tc=.common:\
        :if=/usr/libexec/filters/lp-filter.sh:
#
lpraw|lpr:rm=dcpj552n:\
        :tc=.common:\
        :filter=/bin/cat:
        :ff=:
# written for dcpj552n
dcpj552n:\
        :mx=0:\
        :sd=/var/spool/lpd/dcpj552n:\
        :sh:\
        :rm=dcpj552n:\
        :if=/opt/brother/Printers/dcpj552n/lpd/filterdcpj552n:
# dcpj552n end

LPRng用のスプールディレクトリを作成する。

# cd /var/spool/lpd && mkdir lp lpraw dcpj552n
# chown daemon.daemon lp lpraw dcpj552n
# chmod 700 lp lpraw dcpj552n
# checkpc

/usr/libexec/filters/lp-filter.sh

LPRng用のフィルタースクリプトを作成する。

#! /bin/sh

# Create rcfile start
#
# Ex. lpr -Zmd=Plain:reso=PlainNormal:bidir=ON
#
md=Plain
reso=PlainNormal
bidir=ON
pt=A4
thick=Regular
corm=Color
cm=Vivid
jpeg=Recommended
ht=Diffusion
ce=OFF
sd=OFF
duplex=None
duplexmode=Normal
brit=0
cont=0
red=0
green=0
blue=0
rcfile=/tmp/brdcpj552nrc.1.$$.tmp
#
for i in `echo $* | sed -e 's/^.* -Z//;s/  *.*$//;s/:/ /g'`
do
	key=`echo $i | cut -d= -f1`
	value=`echo $i | cut -d= -f2`
	case ${key} in
	md)
		md=${value}
		;;
	reso)
		reso=${value}
		;;
	bidir)
		bidir=${value}
		;;
	pt)
		pt=${value}
		;;
	thick)
		thick=${value}
		;;
	corm)
		corm=${value}
		;;
	cm)
		cm=${value}
		;;
	jpeg)
		jpeg=${value}
		;;
	ht)
		ht=${value}
		;;
	ce)
		ce=${value}
		;;
	sd)
		sd=${value}
		;;
	duplex)
		duplex=${value}
		;;
	duplexmode)
		duplexmode=${value}
		;;
	brit)
		brit=${value}
		;;
	cont)
		cont=${value}
		;;
	red)
		red=${value}
		;;
	green)
		green=${value}
		;;
	blue)
		blue=${value}
		;;
	*)
		;;
	esac
done
#
touch ${rcfile}
/usr/bin/brprintconf_dcpj552n -md ${md} \
				-reso ${reso} \
				-bidir ${bidir} \
				-pt ${pt} \
				-thick ${thick} \
				-corm ${corm} \
				-cm ${cm} \
				-jpeg ${jpeg} \
				-ht ${ht} \
				-ce ${ce} \
				-sd ${sd} \
				-duplex ${duplex} \
				-duplexmode ${duplexmode} \
				-brit ${brit} \
				-cont ${cont} \
				-red ${red} \
				-green ${green} \
				-blue ${blue} \
				-rcfile ${rcfile}
BRPRINTERRCFILE=${rcfile}; export BRPRINTERRCFILE
#
#------------------------------------------------------------
/opt/brother/Printers/dcpj552n/lpd/filterdcpj552n $*
RET=$?
#------------------------------------------------------------
#
rm -f ${rcfile}
exit $RET
#
# /usr/bin/brprintconf_dcpj552n <[option command] [setting]>...
#  -md    : Media
#    PlainDuplex : Plain Duplex Paper
#    Plain     : Plain Paper
#    Inkjet    : Inkjet Paper
#    BrotherGlossyR : Brother BP71 Photo Paper
#    BrotherBP60Matte : Brother BP60 Matte Paper
#    Glossy    : Other Photo Paper
#    Transparencies : Transparencies
#    HagakiAtena : HagakiAtena
#    HagakiUra : HagakiUra
#    PrintableDisc : PrintableDisc
#  -reso  : BResolution
#    PlainFast : Plain Fast
#    PlainNormal : Plain Normal
#    Fast      : Fast
#    Normal    : Normal
#    Photo     : Photo
#    Best      : Best
#    DiscSlow  : Slow Drying
#    DiscNormal : Disc Normal
#  -bidir : BiDirPrint
#    OFF       : Off
#    ON        : On
#  -pt    : PaperType
#    A4        : A4
#    BrA4_B    : A4 (Borderless)
#    Letter    : Letter
#    BrLetter_B : US Letter (Borderless)
#    Legal     : Legal
#    Executive : Executive
#    B5        : JIS B5
#    A5        : A5
#    A6        : A6
#    BrA6_B    : A6 (Borderless)
#    BrPostC4x6_S : 4 x 6 in
#    BrPostC4x6_B : 4 x 6 (Borderless)
#    BrIndexC5x8_S : 5 x 8 in
#    BrIndexC5x8_B : 5 x 8 in (Borderless)
#    BrPhotoL_S : 3.5 x 5 in
#    BrPhotoL_B : 3.5 x 5 in (Borderless)
#    BrPhoto2L_S : 5 x 7 in
#    BrPhoto2L_B : 5 x 7 in (Borderless)
#    Postcard  : Postcard 1
#    BrHagaki_B : Postcard 1 (Borderless)
#    DoublePostcardRotated : Postcard 2 (Double)
#    EnvC5     : C5 Envelope
#    Br12cmDisc_B : 12 cm Disc
#    EnvDL     : DL Envelope
#    Env10     : Com-10
#    EnvMonarch : Monarch
#    EnvYou4   : Y4 Envelope
#    EnvChou3  : N3 Envelope
#    EnvChou4  : N4 Envelope
#    EnvC6     : C6 Envelope
#  -thick : PaperThick
#    Regular   : Regular
#    Thick     : Thick
#    Env       : Envelope
#  -corm  : ColorOrMono
#    Color     : Color
#    Mono      : Grayscale
#  -cm    : ColorMatch
#    Natural   : Natural
#    Vivid     : Vivid
#    None      : None
#  -jpeg  : JpegPrinting
#    Recommended : Recommended Setting
#    QualityPrior : Improved Print Quality
#    SpeedPrior : Improved Print Speed
#  -ht    : HalfTone
#    Diffusion : Diffusion
#    Dither    : Dither
#  -ce    : ColorEnhance
#    OFF       : Off
#    ON        : On
#  -sd    : SlowDrying
#    OFF       : Off
#    ON        : On
#  -duplex : BRDuplex
#    None      : Off
#    DuplexNoTumble : Long-Edge Binding
#    DuplexTumble : Short-Edge Binding
#  -duplexmode : BRDuplexMode
#    Normal    : Normal
#    Duplex1   : Duplex 1 (Slower print speed)
#    Duplex2   : Duplex 2 (Slower print speed & less ink)
#  -brit  : Brightness
#    numerical value
#  -cont  : Contrast
#    numerical value
#  -red   : RedKey
#    numerical value
#  -green : GreenKey
#    numerical value
#  -blue  : BlueKey
#    numerical value
#  -rcfile
#  The rc file full path

lpr

一般的な設定(A4, 普通紙)で印刷する場合は以下の用に。

$ lpr foo.ps foo.pdf foo.txt

高品質(写真紙)で印刷する場合は以下のように。

$ lpr -Zmd=Glossy:reso=Photo:bidir=OFF:pt=BrPhotoL_B photo.ps

_ DCP-J552Nのスキャナー設定

スキャナードライバーのインストール

以下のドライバーをダウンロードし、root権限でrpmからtgzに変換する。

# rpm2tgz brother-udev-rule-type1-1.0.2-0.noarch.rpm
# rpm2tgz brscan-skey-0.2.4-1.x86_64.rpm
# rpm2tgz brscan4-0.4.9-1.x86_64.rpm

tgzをインストールする。

# installpkg brother-udev-rule-type1-1.0.2-0.noarch.tgz
# installpkg brscan-skey-0.2.4-1.x86_64.tgz
# installpkg brscan4-0.4.9-1.x86_64.tgz

/opt/brother/scanner/brscan4/brsanenetdevice4.cfgの設定

# /usr/bin/brsaneconfig4 -a name=dcp-j552n model=DCP-J552N ip=192.168.0.52
# cat /opt/brother/scanner/brscan4/brsanenetdevice4.cfg
DEVICE=dcp-j552n , "DCP-J552N" , 0x4f9:0x2e3 , IP-ADDRESS=192.168.0.52

/etc/sane.d/net.conf

DCP-J552NのIPアドレスを設定する。

192.168.0.52

/etc/sane.d/dll.conf

スキャナードライバの種類を設定する。

brother4

動作確認

$ scanimage --list-devices
device `brother4:net1;dev0' is a Brother dcp-j552n DCP-J552N

スキャンする!

$ xsane &

2020年08月09日 Setting ACPI for suspending machine automatically when battery charge loss [長年日記]

_ ノートPCのバッテリー残量が少なくなったら自動的にサスペンドするためのACPI設定方法

/etc/acpi/acpi_handler.sh

バッテリーに関するイベントを検知したらスクリプト(/etc/acpi/lowbattery.sh)を起動する。

*** acpi_handler.sh.ORG 2020-08-08 23:40:56.530432033 +0900
--- acpi_handler.sh     2020-08-09 01:16:38.793951977 +0900
***************
*** 13,18 ****
--- 13,21 ----
           ;;
      esac
      ;;
+   battery)
+     /etc/acpi/lowbattery.sh &
+     ;;
    *)
      logger "ACPI group $1 / action $2 is not defined"
      ;;

/etc/acpi/lowbattery.sh

バッテリー駆動の間は60秒間隔でバッテリー残量をチェックし、残量が10%を切った場合サスペンドする。ACアダプタ駆動になったら終了する。

#! /bin/sh
trap 'rm -fr /tmp/lowbattery.lock' INT TERM

mkdir /tmp/lowbattery.lock || exit 1

wait=60
threshold_percent=10

while [ X = X ]
do
        if [ X`cat /proc/acpi/ac_adapter/ACAD/state | egrep off-line` = "X" ]
        then
                off_line=no
        else
                off_line=yes
        fi

        if [ ${off_line} = yes ]
        then
                last_full_capacity=`cat /proc/acpi/battery/BAT1/info |\
                        egrep 'last full capacity' |\
                        sed -e 's/: */:/;s/ mAh//' |\
                        cut -d: -f2`
                remaining_capacity=`cat /proc/acpi/battery/BAT1/state |\
                        egrep 'remaining capacity' |\
                        sed -e 's/: */:/;s/ mAh//' |\
                        cut -d: -f2`
                battery_percent=`expr ${remaining_capacity} \* 100 / ${last_full_capacity}`

                if [ ${battery_percent} -le ${threshold_percent} ]
                then
                        logger "ACPI /etc/acpi/lowbattery.sh suspend(${battery_percent}%/${threshold_percent}%)"
                        sync;sync;sync
                        echo -n mem > /sys/power/state
                fi
        else
                break
        fi

        sleep ${wait}
done

rm -fr /tmp/lowbattery.lock