[Comm] AL4 & kernel-2.6.22 & AverTV 50x

Алексей Шенцев =?iso-8859-1?q?ashen_=CE=C1_nsrz=2Eru?=
Пт Ноя 16 11:54:34 MSK 2007


В сообщении от Friday 16 November 2007 11:26:26 Maxim Ivanov написал(а):
> У меня абсолютно тоже самое.
Угу ...

> Запустился!
> lircd-0.8.2[4914]: lircd(userspace) ready
Для начала хорошо. А теперь пробуйте в другой консоле запустить irw и по 
нажимать кнопки на пульте. Все 34 кнопки у вас отображаются? У меня пульт 
RM-HA

> Так-с... Его что, в /etc/rc.d засунуть может?
А он там и есть:
[root на oasu3 /]# ls /etc/rc.d/init.d/lir*
/etc/rc.d/init.d/lircd
[root на oasu3 /]#

Вот здесь http://linux.org.ua/cgi-bin/yabb/YaBB.pl?num=1193373582
предлагается переписать оригинальный /etc/rc.d/init.d/lircd, сохранив права 
оригинального файла. Утверждается, что по неизвестным автору причинам 
оригинальный /etc/rc.d/init.d/lircd не работает.
Я его поправил следующим образом:

[root на oasu3 init.d]# cat lircd
#!/bin/sh
#
# lircd         Linux Infrared Remote Control daemon
#
# chkconfig:    2345 65 35
# description:  LIRC is a package that allows you to decode and send
#               infrared signals of many (but not all) commonly used
#               remote controls.
#
# processname:  lircd
# pidfile:      /var/run/lircd.pid
# config:       /etc/lircd.conf
# config:       /etc/sysconfig/lircd

### BEGIN INIT INFO
# Provides: lircd
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Short-Description: Linux Infrared Remote Control daemon
# Description: LIRC is a package that allows you to decode and send
#              infrared signals of many (but not all) commonly used
#              remote controls.
### END INIT INFO

# Source function library
. /etc/rc.d/init.d/functions

# Get service config
[ -f /etc/sysconfig/lircd ] && . /etc/sysconfig/lircd

# See how we were called.
case "$1" in

  start)    # Check if the service is already running?
            if [ ! -f /var/lock/subsys/lircd ]; then

                # Release serial port.
                if [ "${HWMOD}" = "lirc_serial" ]; then

                    if lsmod | grep -q ^serial; then

                        modprobe -r serial

                    else

                        setserial ${COM_PORT} uart none

                    fi

                fi

                # Load the hardwaredriver
                #if [ -z "$HWMOD" ] || lsmod | grep -q ${HWMOD} ; then

                #    true

                #else

                #    modprobe ${HWMOD} ${DRIVER_OPTS} > /dev/null

                #fi

                gprintf "Starting Linux Infrared Remote Control daemon:"

                OPTIONS=""
                DRIVER="dev/input"
#               DEVICE="/dev/input/event2"
                DEVICE="/dev/input/by-path/pci-0000:02:02.0--event-ir"
                [ -n "${DRIVER}" ] && OPTIONS="--driver=${DRIVER}"
                [ -n "${DEVICE}" ] && OPTIONS="${OPTIONS} --device=${DEVICE}"

                daemon lircd ${OPTIONS}

                RETVAL=$?
                [ ${RETVAL} -eq 0 ] && touch /var/lock/subsys/lircd

            else

                gprintf "Starting Linux Infrared Remote Control daemon:"
                failure

            fi

            echo
            ;;

  stop)     # Stop daemons.
            if [ -f /var/lock/subsys/lircd ]; then

                gprintf "Stopping Linux Infrared Remote Control daemon:"

                killproc lircd

                rm -f /var/lock/subsys/lircd >/dev/null 2>&1

                # Unload the hardwaredriver
                if [ -z "$HWMOD" ] || lsmod | grep -q ${HWMOD} ; then

                    modprobe -r ${HWMOD} > /dev/null

                fi

                echo

            else

                gprintf "Stopping Linux Infrared Remote Control daemon:"
                failure
                echo
                exit 1

            fi
            ;;

  status)   status lircd
            ;;

  restart)  test -f /var/lock/subsys/irexec && RESTART_IREXEC=yes
            test -n "${RESTART_IREXEC}" && /etc/rc.d/init.d/irexec stop

            test -f /var/lock/subsys/lircmd && RESTART_LIRCMD=yes
            test -n "${RESTART_LIRCMD}" && /etc/rc.d/init.d/lircmd stop

            $0 stop
            $0 start

            test -n "${RESTART_LIRCMD}" && /etc/rc.d/init.d/lircmd start
            test -n "${RESTART_IREXEC}" && /etc/rc.d/init.d/irexec start
            ;;

  reload)   gprintf "Reloading Linux Infrared Remote Control daemon:"
            killproc lircd -HUP
            echo
            ;;

  *)        gprintf "$0 {start|stop|status|restart|reload}\n"
            exit 1
            ;;

esac

exit ${RETVAL}


Вроде стартанул, но с руганью:
[root на oasu3 init.d]# service lircd restart
/etc/init.d/lircd: line 91: gprintf: command not found
                                                                                           
[ DONE ]
/etc/init.d/lircd: line 64: gprintf: command not found
                                                                                           
[ DONE ]
[root на oasu3 init.d]# service lircd status
lircd is running
[root на oasu3 init.d]#

В этом я не силён, кто бы подсказал в чём косяк?

PS: мне не нравится такое решение, может расскажут более изящное и элегантное 
решение? Буду пре много благодарен.
-- 
С уважением Шенцев Алексей Владимирович.
E-mail: ashen на nsrz.ru
XMPP: ashen на altlinux.org, AlexShen на jabber.ru
ICQ: 271053845



Подробная информация о списке рассылки community