PDA

Bekijk de volledige versie : Real time clock with Oleg's firmware



hugo
03-02-2005, 16:49
Hi,

I was wondering how I could get the hardware clock from my WL HDD using Oleg's latest firmwares. I can't see any /dev/rtc devices, but this is something in hardware. This would be very usefull for using the WL without any internet connection and still log correct timestamps.

Does it need a kernel module? I can find the one from WL-hdd root fs, but it doesn't create any devices (as splink_led)

Oleg
03-02-2005, 18:41
Yes, kernel module is required, but I've no idea how this works - probably they've changed something in the kernel.
The module itself contains bunch of code, which is providing I2C access via GPIO pins to the RTC.
Have you determined name of RTC chip?

BTW, I'm pretty sure, that this code is subject to GPL, but ASUS is violating it as USUAL.

hugo
03-02-2005, 21:22
Ok, here is the answer:

Use the module attached
insmod rtcdrv.o

then
mknod /dev/rtc c 12 0

Using cat /dev/rtc, you get the real time. Just have to set up some progs to use it, and maybe set this as an option in firmware?

Alice
04-02-2005, 23:09
should this work for wl-500g?

[root@WL500G:/]# insmod rtcdrv.o
rtcdrv.o: kernel-module version mismatch
rtcdrv.o was compiled for kernel version 2.4.5
while this kernel is version 2.4.20.
[root@WL500G:/]# insmod -f rtcdrv.o
Warning: kernel-module version mismatch
rtcdrv.o was compiled for kernel version 2.4.5
while this kernel is version 2.4.20
Warning: loading rtcdrv.o will taint the kernel: no license
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Warning: loading rtcdrv.o will taint the kernel: forced load
Module rtcdrv loaded, with warnings
[root@WL500G:/]# mknod /dev/rtc c 12 0
[root@WL500G:/]# cat /dev/rtc
20ff:7f:ff:ff:ff:ff:ff[root@WL500G:/]#

Antiloop
05-02-2005, 02:16
should this work for wl-500g?
no, the wl500g does not have a RTC

hugo
12-04-2005, 11:42
For the owners of Wl-HDD using Oleg firmwares, you don't have real time clock available. I still cannot set time (so you need to use normal Wl-hdd firmware for that), but here is an how -to to get your clock set on boot up if you are not connected to internet:

First read my previous post, and place the rtcdrv.o in a folder on hd.

You must also get the full busybox from the forum, or from the package (use ipkg.sh install busybox)
Check you can get awk working using busybox awk command.

Then edit your post-mount like this:


[admin@wl-hdd sbin]$ cat post-mount
#!/bin/sh
insmod /tmp/hd/wl-hdd/lib/modules/2.4.20/rtcdrv.o
mknod /dev/rtc c 12 0
date -s "`/tmp/hd/conf/bin/busybox awk 'BEGIN {FS=":"}; {print $2"/"$3"/"$1" "$5":"$6":"$7}' /dev/rtc`"



Be sure to change path to your module path.

I think date command is from the coreutils package. You might check compatibility with standard one.

Also, using sed might be lighter, not using the full busybox.
Also, use copy and paste, as i'm using 3 different quote types.

inner_turbulenc
30-12-2005, 02:42
I was able to set the clock by using the following after Telnetting into my WL-HDD:

[admin@LG-Music harddisk]$ date
Wed Dec 31 19:57:03 EST 1969
[admin@LG-Music harddisk]$ date -?
date: illegal option -- ?
BusyBox v1.00 (2005.05.11-18:29+0000) multi-call binary

Usage: date [OPTION]... [MMDDhhmm[[CC]YY][.ss]] [+FORMAT]

[admin@LG-Music harddisk]$ date -s "122920352005"
Thu Dec 29 20:35:00 EST 2005

spank_santa
08-02-2006, 22:52
Hi Hugo,

Thank you for your answer, I am now able to set the time during boot. But do you know if there is already a way to change the time in the hardware clock itself (without installing the asus firmware) because my hardware time is half a hour behind. I searched everywhere but couldnĺt find anything. :(

SurJector
04-06-2006, 21:24
You can remove your awk with a little sh trick:

if [ `date +%s` -lt 10000 ]; then
#we are before Jan 1 1970, 3am, the clock has not been set up
cat /dev/rtc|(IFS=:;read Y M D dow h m s
# dow is day of week, 0=sunday
date $M$D$h$m$Y.$s
fi
In the /usr/local/sbin/pre-shutdown script, you can add

[ -c /dev/rtc ] && date +%Y:%m:%d:%w:%H:%M:%S > /dev/rtc

fredlcore
31-10-2006, 09:20
Hi,


You can remove your awk with a little sh trick:

if [ `date +%s` -lt 10000 ]; then
#we are before Jan 1 1970, 3am, the clock has not been set up
cat /dev/rtc|(IFS=:;read Y M D dow h m s
# dow is day of week, 0=sunday
date $M$D$h$m$Y.$s
fi


The cat /dev/rtc... line seems to be incomplete, a bracket seems to be missing, furthermore, the variables aren't set at my WL-HDD.
I have to use the following line which unfortunately requires awk again :(


date -s "`awk 'BEGIN {FS=":"}; {print $2$3$5$6$1"."$7}' /dev/rtc`"



In the /usr/local/sbin/pre-shutdown script, you can add

[ -c /dev/rtc ] && date +%Y:%m:%d:%w:%H:%M:%S > /dev/rtc

Although it returns with no error, the clock still remains at the previous time set if I run this on command line. Or will it only work at pre-shutdown?
Could it be somehow read-only (even for root) or some other process still using it?

CU!

Frederik.

starbright
02-11-2006, 22:40
Could set date via RTC too. But how to set the RTC? :eek:

The

[ -c /dev/rtc ] && date +%Y:%m:%d:%w:%H:%M:%S > /dev/rtc

doesn't work for me to.

SurJector
14-11-2006, 11:13
Sorry for being late. I was hibernating.
The first script lacks a closing parenthesis immediately after the date command:

date $M$D$h$m$Y.$s)

There should be no problem, but you might need to load the driver (I can't check because I don't have my HDD: I've loaned it to a friend).

fredlcore
25-11-2006, 14:59
Hi,

sorry for my late reply, too, was without DSL for two weeks :( ...


The first script lacks a closing parenthesis immediately after the date command:

date $M$D$h$m$Y.$s)



Great, works now. Maybe you could edit your previous post to have it correct there for other people who might not read the complete thread?

As for the problem with setting the RTC via the command mentioned above, I found out the following: Although the command does not return with an error, dmesg gives me the following output:



Write RTC string:2006:11:25:6:14:14:00

Error: RTC format mismatch!!


I then tried something obvious like

cat /dev/rtc > /dev/rtc
which gave me

Write RTC string:2006:11:25:6:14:25:08
4:
Error: RTC format mismatch!!
So I assumed that 24-hours time could be a problem and set manually

echo "2006:11:25:6:02:25:08" > /dev/rtc
Which gave me a strange

Write RTC string:2006:11:25:6:02:25:08

Error: RTC format mismatch!!

Write RTC string:2006:11:25:6:02:25:08

Error: RTC format mismatch!!
(Right, it threw two errors with one single command issued.)
If I change the "02" to just "2", the "┼"-character disappears in the error message.

Any ideas anyone?

CU!

Frederik.

starbright
21-03-2007, 16:09
wanna bring this topic up again.
Someone know how to set the RTC? It's possible with the origin firmware, but for sure I don't wanna flash and back it just to set time ;)

Martin1802
27-03-2007, 15:08
Hi :-)

rtcdrv.o works fine on my WLHDD ... the only ASUS device with a RTC (!) ... I add a howto to german discussion thread from wengi ... end of the week :-)

Martin

Edit: Sorry no time at the moment ... hope to get it in 2 weeks ...

wengi
23-04-2007, 13:28
Let me have a try :D :D

EDIT:

Added to HowTo. Still problems saving time to rtc:
[admin@blechbuechse root]$ write /dev/rtc string:2007:04:23:1:15:05:27
/dev/rtc: File is too small (22 bytes)

Next try:

echo "string:2007:04:23:1:15:05:27" > /dev/rtc
This results in a disconnect of ssh :(

andi
20-05-2007, 16:00
Since I also had some trouble with the proprietary rtcdrv.o module, I simply wrote my own one. If you trust me enough ;), try the attached rtc.o module. I have compiled it for OpenWrt (WhiteRussian 0.9). It has the same interface as rtcdrv.o, plus support for an ordinary hwclock utility. The only difference is, that it uses the standard 10/135 major/minor numbers for /dev/rtc, whereas rtcdrv.o uses 12/0. The source code is available too, but I didn't want to throw in an 8k big file at once.

UPDATE: attachment removed because it doesn't work with Oleg's firmware.

wengi
20-05-2007, 18:01
Thanks andi,

but how can i set the time now?

wengi

andi
20-05-2007, 19:32
First make sure that you have the correct device entry. It might be that you have the wrong entry from the rtcdrv.o module.


root@OpenWrt:~# ls -l /dev/rtc
crw-r--r-- 1 root root 10, 135 Jan 1 2000 /dev/rtc

If not, create the correct device node first:


mknod /dev/rtc c 10 135

Then a simple

root@OpenWrt:~# cat /dev/rtc
2007:05:20:0:19:17:00
should print the current date and time and


echo "2007:05:20:0:19:17:00" > /dev/rtc

should set the RTC. If changing the time does not work, please check the kernel log for any error message.

A better solution would be to use a real hwclock utility, but this requires recompilation of busybox.

UPDATE:
Or even easier: use the following script:


#!/bin/sh

[ -c /dev/rtc ] || {
echo "/dev/rtc missing"
exit 1
}

case "$1" in
--show)
/bin/cat /dev/rtc
;;
--hctosys)
/bin/cat /dev/rtc|(IFS=:;read Y M D d h m s;/bin/date -s $M$D$h$m$Y.$s)
;;
--systohc)
/bin/date +%Y:%m:%d:%w:%H:%M:%S > /dev/rtc
;;
*)
echo "Usage: $0 {--show|--systohc|--hctosys}" >&2
;;
esac

wengi
21-05-2007, 12:01
hmmm. it does not seem to work with olegs firmware :(
i can load the module:

May 21 11:14:39 kernel: WL-HDD Real Time Clock Driver loaded
mknod works and there is a /dev/rtc.
But then:

[admin@blechbuechse root]$ cat /dev/rtc
/dev/rtc: Bad address

Any idea?

wengi

andi
21-05-2007, 21:11
Hmm, too bad :( . There's still one attempt left. I have attached a previous version of the module, which doesn't use the kernel supplied interface to the gpio pins, but directly accesses them through memory mapped I/O (same method as the proprietary rtcdrv.o). However, I abandoned it, because of the hardwired addresses used and some problems I had with implementing the write routine (I wasn't able to write all RTC registers in one go). Perhaps you have more luck with this one.

Note that I have added a debug option to this module. You can load it with


insmod rtc2.o rtc_debug=1

and then the kernel log should tell you something about the traffic on the i2c bus.

If this still doesn't work, I currently don't have an idea how to proceed.

UPDATE: attachment removed, because it does not work with Oleg's firmware.

andi
22-05-2007, 23:00
Ok, here is my last attempt for now. This time I have compiled the file using different compiler flags and the asus toolchain instead of the OpenWrt SDK. I'll keep my fingers crossed...


UPDATE: See this post (http://wl500g.info/showpost.php?p=55985&postcount=25) for the module.

wengi
23-05-2007, 11:49
Hi andi,

thanks for your help. i am very busy atm. i will test the rtc within the next days.
Sorry

wengi

wengi
26-05-2007, 12:53
Hi andi,

rtc3 made my day!!!

this is the rtc part of my post-boot:
# activate RTC. Remove this if not using WL-HDD!
# remove /dev/rtc with old parameters
rm /dev/rtc
# mknod with new parameters
mknod /dev/rtc c 10 135
# insert module
insmod /opt/lib/modules/2.4.20/rtc3.o
# set time from RTC
if [ `date +%s` -lt 10000 ]; then
#we are before Jan 1 1970, 3am, the clock has not been set up
cat /dev/rtc|(IFS=:;read Y M D dow h m s
# dow is day of week, 0=sunday
date $M$D$h$m$Y.$s)
fi
and this is my pre-shutdown:
#!/bin/sh
# write a log line:
echo "rtc-time is set to `/bin/date '+%Y:%m:%d:%w:%H:%M:%S'`" | logger -t pre-shutdown
# set time:
/bin/date +%Y:%m:%d:%w:%H:%M:%S > /dev/rtc

Thank you so much!

wengi

andi
26-05-2007, 16:08
Great! Now, after the module is working, could you please try the attached one. It fixes two bugs. Only one of it is relevant for you: because of a bug in the 12h<->24h calculations, the module produces wrong times from 8pm til 10pm :(. This time I have tested the module more thoroughly, so I hope its now bug free.

Please note that the first time you load the module, the driver now puts the RTC into 24h mode. Since it probably was running in 12h mode before, this will result in garbage times when doing this after 12pm. The fix is to run your pre-shutdown script (or 'hwclock --systohc') manually once.

Sorry for the inconvenience.

wengi
26-05-2007, 18:37
Its done and working fine :D :D
And the code is exactly 8000 byte. I am going to drink a beer because of this :cool:

Thanks so much

wengi

starbright
05-09-2007, 12:41
Is there a change to get that WLHDD gives time to dbox by rdate?

If I do it from dbox rdate <IP_of_WL-HDD> I get an error message.

rdate seems to be supported by the dbox.

andi
08-09-2007, 11:31
Is there a change to get that WLHDD gives time to dbox by rdate?

Theoretically, yes. You need an inetd running which supports the time service. If you don't have inetd on your WL-HDD, you need to recompile busybox with inetd (and the time service) enabled. If you haven't built your system yourself, it might be safer to just create a special busybox binary containing only this daemon instead of replacing the system's busybox.

fredlcore
03-11-2007, 12:33
Theoretically, yes. You need an inetd running which supports the time service.

Would the inetutils resp. xinetd that comes with ipkg do the task?

F.

andi
03-11-2007, 13:34
Would the inetutils resp. xinetd that comes with ipkg do the task?

Yes, of course a standalone (x)inetd will also work. In case of xinetd, the file /etc/xinetd.d/time (or wherever your xinetd has its configuration file(s)) with the following content should do the job:


service time
{
type = INTERNAL
id = time-stream
socket_type = stream
protocol = tcp
user = root
wait = no
disable = no
}

simplyred
11-11-2007, 11:53
@andi

hi Andi,

i use your rtc3 with OLEG 1.9.2.7-7g and it works fine. Thank you very much.

But after the upgrade to OLEG 1.9.2.7-8 it didn't work. I don't remember the error message because i switched back to -7g again.

Could you please check this ?

greets
simplyred

andi
11-11-2007, 13:12
But after the upgrade to OLEG 1.9.2.7-8 it didn't work. I don't remember the error message because i switched back to -7g again.

Could you please check this ?


That seems to be difficult without an error message. If you followed this thread from where I jumped in, you might have noticed that I don't run Oleg's firmware on my box, so I can't verify this here. And from Oleg's announcement, I don't see which of his changes might be the cause for the problem.

Sorry for not being of much help here at the moment.

simplyred
11-11-2007, 17:04
I switched to OLEG 1.9.2.7-8 again and tried to set the time with putty.
here is the result:

[admin@WL-HDD harddisk]$ /tmp/harddisk/hwclock.sh --hctosys
date: invalid date `-91-91-91-911809.-91'


In the syslog i also found the following errors:

Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: ***RTC BATTERY FAILURE***

Any idea ? Is there a problem with the new image ?

andi
11-11-2007, 18:56
I switched to OLEG 1.9.2.7-8 again and tried to set the time with putty.
here is the result:

[admin@WL-HDD harddisk]$ /tmp/harddisk/hwclock.sh --hctosys
date: invalid date `-91-91-91-911809.-91'


That means that the time/date read from the RTC is invalid.



In the syslog i also found the following errors:

Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: SCL pin should be low
Jan 1 01:28:50 kernel: ***RTC BATTERY FAILURE***


Since it is working with the previous firmware release, this means that the I2C communication to the RTC chip doesn't work.

I've downloaded the source code of Oleg's patches and checked what he has changed. And in fact, he (indirectly and incompatibly) changed the access to the gpio pins (two gpio pins are used to communicate with the RTC). From what I see, the necessary changes to my driver seem to be trivial, but I'm currently unable to compile the driver myself because this also requires an updated toolchain (or at least updated kernel headers).

Oleg
11-11-2007, 19:45
Could you please share your source?

Seems like you've expected preconfigured scl/sda gpios, which is in fact should not be touched by watchdog...

andi
11-11-2007, 20:00
Could you please share your source?


Ok, here it is. Note that I've already modified the code to the best of my knowledge to comply with your changed function calls.



Seems like you've expected preconfigured scl/sda gpios, which is in fact should not be touched by watchdog...

That might be true. I stopped thinking about whether or not I've implemented it correct when I got the response that the driver was working.

Oleg
11-11-2007, 20:26
Thanks. BTW, which RTC chip is used by WL-HDD?

Oleg
11-11-2007, 20:40
Here is it. Someone should try it.

andi
11-11-2007, 21:01
Thanks. BTW, which RTC chip is used by WL-HDD?

Ricoh RV 5C386A (http://www.ic-on-line.cn/view_online.php?id=1868902&file=0435\rv5c386a_5464726.pdf)

simplyred
11-11-2007, 21:02
Thanks Oleg, it works: :D

[admin@WL-HDD harddisk]$ /tmp/harddisk/hwclock.sh --hctosys
Sun Nov 11 20:51:49 MEZ 2007


is it possible, to get it in the next Update for WL-HDD ?

Oleg
11-11-2007, 21:10
Yes, perhaps. Well, tried on my WL-700gE and it also works (the only change is SDA gpio pin). :) It use the same ricoh chip.

Well, looks like we need to make general purpose: i.e. allow to specify sda/scl as module parameters.

Btw, does 24h switch destroys current clock setting completely? Or just hour value?

Oleg
11-11-2007, 21:11
Also, this driver should have automatic devfs registration...

andi
11-11-2007, 21:47
Well, looks like we need to make general purpose: i.e. allow to specify sda/scl as module parameters.

That shouldn't be a problem to implement. I assume you can do this yourself ;).



Btw, does 24h switch destroys current clock setting completely? Or just hour value?

The switch to 24h mode doesn't really destroy the setting. Depending on the current time, it just leads to invalid time values within the chip. And according to the data sheet: "Any carry from lower digits with the writing of non-existent time may cause the time counters to malfunction." In any case, I don't think it's worth optimizing this, as it is only relevant the very first time you load the module.



Also, this driver should have automatic devfs registration...

The driver uses misc_register(), which already does devfs registration.

BTW.: Did you need to make any adjustments to my code, or was it already correct?

Oleg
11-11-2007, 22:00
That shouldn't be a problem to implement. I assume you can do this yourself ;).

Yes. :)



The driver uses misc_register(), which already does devfs registration.

Ghm... Right. /dev/misc/rtc is available. I've added hwclock applet to busybox and it works fine.



BTW.: Did you need to make any adjustments to my code, or was it already correct?
It was correct.

Well, do we still need compatibility with original asus code? I mean reading/writing via /dev/rtc?

andi
11-11-2007, 22:19
Well, do we still need compatibility with original asus code? I mean reading/writing via /dev/rtc?

In my opinion, this isn't needed at all. The reason why I implemented it compatible to the original asus code was just the missing hwclock applet.

wengi
12-11-2007, 09:15
Hi all,

thanks for your great work!

Yes, perhaps. Well, tried on my WL-700gE and it also works (the only change is SDA gpio pin). :) It use the same ricoh chip.The WL-700gE has a RTC? I have to update my HowTo.
Can anybody tell me if the new driver will work with an older oleg firmware?
I am not able to test it atm.

wengi

Oleg
12-11-2007, 09:19
The WL-700gE has a RTC?

Yes.


Can anybody tell me if the new driver will work with an older oleg firmware?

Unlikely, it use new features.

Oleg
13-11-2007, 17:47
Finally, this driver would be available in the firmware. The name was changed to gpiortc to honor existing rtc.c.

Anyway, clock synchronization will now be done automagically during the boot. RTC would be synced back at shutdown/reboot. No need in scripts, etc.

andi, thank you for your work.

wengi
14-11-2007, 08:46
andi, thank you for your work.
FACK

And thank you for the integration :D

wengi

andi
07-12-2007, 21:55
The name was changed to gpiortc to honor existing rtc.c.


I shouldn't have called this simply rtc.c at all, as the name wrongly implies some generic rtc stuff. I'd recommend rtc-rv5c386a.c which fits the current naming scheme of rtc drivers in the linux kernel.

wengi
24-12-2007, 11:53
Hi all,

i just want to report i finally updated to the new oleg firm, changed the driver and everything is working like a charm :-))))

Thanks so much to oleg and andi!!!

wengi

monnier
03-12-2008, 16:45
I shouldn't have called this simply rtc.c at all, as the name wrongly implies some generic rtc stuff. I'd recommend rtc-rv5c386a.c which fits the current naming scheme of rtc drivers in the linux kernel.

It appears this driver hasn't made it upstream yet. Is it available somewhere other than in Oleg's own sources? E.g. is it available for OpenWRT somewhere?

andi
03-12-2008, 17:42
It appears this driver hasn't made it upstream yet. Is it available somewhere other than in Oleg's own sources? E.g. is it available for OpenWRT somewhere?

The OpenWRT wiki page for the WL-HDD (http://wiki.openwrt.org/OpenWrtDocs/Hardware/Asus/WL-HDD) still exists. The code there is for WhiteRussian. There's also some source code for Kamikaze, see ticket #1873 (https://dev.openwrt.org/ticket/1873).

Note that it only supports the WL-HDD, not the WL-700gE as Oleg's software does.

monnier
05-12-2008, 04:19
The OpenWRT wiki page for the WL-HDD (http://wiki.openwrt.org/OpenWrtDocs/Hardware/Asus/WL-HDD) still exists. The code there is for WhiteRussian. There's also some source code for Kamikaze, see ticket #1873 (https://dev.openwrt.org/ticket/1873).

Note that it only supports the WL-HDD, not the WL-700gE as Oleg's software does.

Thank you. I've adapted the package for Kamikaze so it now runs on my WL-700gE with 2.6.25.20 (and even automatically adapts to either one of wl-hdd and wl-700ge).


bzr clone http://www.iro.umontreal.ca/~monnier/bzr/rtc-rv5c386a

dp79
20-04-2009, 14:20
Hi there,

I'm also trying to get a solution to have a Real Time Clock on my WL500g, which does not have the required hardware unfortunately. However, I have a Dreambox (linux based satellite receiver), which has an RTC built in itself. I was thinking if it's possible, that my WL500g router connects to the dreambox and reads the time out from it.

I use my WL500g in client mode and I would like to set up a timeframe for "uptime" and "downtime"

Thanks for the help in advance!

dp79

monnier
21-04-2009, 00:14
I'm also trying to get a solution to have a Real Time Clock on my WL500g, which does not have the required hardware unfortunately. However, I have a Dreambox (linux based satellite receiver), which has an RTC built in itself. I was thinking if it's possible, that my WL500g router connects to the dreambox and reads the time out from it.

I don't think this would enter the scope of what is usually considered "RTC".
You can use any kind of network-time tool, like NTP, rdate, ...

dp79
21-04-2009, 10:20
Hi,

This is exactly what I was looking for! Thanks a lot!

For the ones who are seeking for a similar solution, heres a little help from openwrt:

http://oldwiki.openwrt.org/OpenWrtDocs(2f)WhiteRussian(2f)Configuration.html# head-04a1e25614a4ef443d3e761fcded53b5046c82de

Cheers,
dp79