[Vm-dev] linux systems startup stuff for a servo controller daemon
tim Rowledge
tim at rowledge.org
Thu Jan 11 20:44:35 UTC 2018
> On 10-01-2018, at 7:53 PM, David T. Lewis <lewis at mail.msen.com> wrote:
>
> From looking at the Makefile, I would say that the init script is being
> installed but it has not been wired into the system boot processing.
> Possibly the person who wrote the makefile left that part as an "exercise
> for the reader”.
The odd thing is that it does appear to try to start on boot (but inevitably fails because pigpiod is not autostarted) and I see
systemctl status pca9685servo
● pca9685servo.service - LSB: Start/stop pca9685servod.
Loaded: loaded (/etc/init.d/pca9685servo; generated; vendor preset: enabled)
Active: inactive (dead)
>
> Give this a try and see if it works: Reboot the Pi, at which point the servo
> will not be working. Then run this command (possibly with sudo in front if
> it if you are not root):
>
> # /etc/init.d/pca9685servo start
This gets a bit odder seeming to me -
pi at PiCamera-1:~ $ sudo /etc/init.d/pca9685servo start
Device address = 0x40
Requested servo cycle time: 20000.000us
Pulse increment step size: 5.000us
Setting prescale value to: 121
Actual frequency: 50.029
Actual cycle time: 19988.480us
Minimum width value: 500.000us (100)
Maximum width value: 2500.000us (500)
Setting prescale value to: 121
pi at PiCamera-1:~ $ echo 0=70% > /dev/pca9685servo
Raw width input = 70.000000
% specified -> 0.700000
set servo[0]=70.000000 %
servo on: 0 off: 389
… but the servo doesn’t move.
Another status check -
pi at PiCamera-1:~ $ systemctl status pca9685servo
● pca9685servo.service - LSB: Start/stop pca9685servod.
Loaded: loaded (/etc/init.d/pca9685servo; generated; vendor preset: enabled)
Active: inactive (dead)
ps aux says there is only one pca daemon running.
So let’s try stopping it … ok, no pca running anymore. Run it completely manually -
pi at PiCamera-1:~ $ sudo /usr/local/sbin/pca9685servod Device address = 0x40
Requested servo cycle time: 20000.000us
Pulse increment step size: 5.000us
Setting prescale value to: 121
Actual frequency: 50.029
Actual cycle time: 19988.480us
Minimum width value: 500.000us (100)
Maximum width value: 2500.000us (500)
Setting prescale value to: 121
pi at PiCamera-1:~ $ echo 0=70% > /dev/pca9685servo
Raw width input = 70.000000
% specified -> 0.700000
set servo[0]=70.000000 %
servo on: 0 off: 389
.. servo moves as expected. Gronk?
If i completely remove the /etc/init.d/pca9685servo script to make sure it can’t autostart and reboot then I do actually get to restart from clean.
pi at PiCamera-1:~ $ ps aux | grep pca
pi 1195 0.0 0.0 4380 576 pts/0 S+ 12:21 0:00 grep --color=auto pca
And to make life still more annoying manually starting the daemon results in no servo motion.
Reboot once more; no pigpiod nor pca runnig.
start pigpiod
start pca
ps says both running
try to move servo - nope.
pi at PiCamera-1:~ $ systemctl status pca9685servo
● pca9685servo.service - LSB: Start/stop pca9685servod.
Loaded: loaded (/etc/init.d/pca9685servo; generated; vendor preset: enabled)
Active: active (running) since Thu 2018-01-11 12:30:16 PST; 3min 21s ago
Docs: man:systemd-sysv-generator(8)
Process: 1231 ExecStart=/etc/init.d/pca9685servo start (code=exited, status=0/
CGroup: /system.slice/pca9685servo.service
└─1238 /usr/local/sbin/pca9685servod
Jan 11 12:30:16 PiCamera-1 systemd[1]: Started LSB: Start/stop pca9685servod..
Jan 11 12:30:34 PiCamera-1 pca9685servo[1231]: Raw width input = 70.000000
Jan 11 12:30:34 PiCamera-1 pca9685servo[1231]: % specified -> 0.700000
Jan 11 12:30:34 PiCamera-1 pca9685servo[1231]: set servo[0]=70.000000 %
Jan 11 12:30:34 PiCamera-1 pca9685servo[1231]: servo on: 0 off: 389
Jan 11 12:30:40 PiCamera-1 pca9685servo[1231]: Raw width input = 10.000000
Jan 11 12:30:40 PiCamera-1 pca9685servo[1231]: Add 0.100000 to 0.700000 = 0.8000
Jan 11 12:30:40 PiCamera-1 pca9685servo[1231]: % specified -> 0.800000
Jan 11 12:30:40 PiCamera-1 pca9685servo[1231]: set servo[0]=80.000000 %
Jan 11 12:30:40 PiCamera-1 pca9685servo[1231]: servo on: 0 off: 430
So clearly it is running and receiving commands but failing at something. If I kill that incarnation and manually start with
pi at PiCamera-1:~ $ sudo /usr/local/sbin/pca9685servod
then my servo moves.
Is everyone else as baffled as me?
tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Strange OpCodes: D: Detonate
More information about the Vm-dev
mailing list