I think we're getting closer to the truth now.

Reading the source code and especially this section is interesting:
#ifdef CONFIG_W1_SLAVE_DS2433_CRC 
<http://sbexr.rabexc.org/latest/sources/0f/5e84f0288ea608.html#00b1600900b16024>
 
  /* can only write full blocks in cached mode */ 
  if ((off 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000cd008000cd00f>
 
& W1_PAGE_MASK 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#0001f0090001f017>)
 
|| (count 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000cd014000cd01b>
 
& W1_PAGE_MASK 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#0001f0090001f017>))
 
{
    dev_err 
<http://sbexr.rabexc.org/latest/sources/1c/d25b2fb3f904be.html#000670090006802b>(&sl->dev,
 
"invalid offset/count off=%d cnt=%zd\n", (int)off, count); 
    return -EINVAL 
<http://sbexr.rabexc.org/latest/sources/7f/c1319580667ad5.html#0001a0090001a011>;
 
} 
  /* make sure the block CRCs are valid */ 
  for (idx 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000d0002000d0011>
 
= 0; idx 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000d0002000d0011>
 
< count 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000cd014000cd01b>;
 
idx 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000d0002000d0011>
 
+= W1_PAGE_SIZE 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#0001d0090001d017>)
 
{ 
     if (crc16 
<http://sbexr.rabexc.org/latest/sources/0d/c2946195028c93.html#0001400100014037>
(CRC16_INIT 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#0001200900012015>,
 
&buf 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000cc028000cc02e>
[idx 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#000d0002000d0011>],
 
W1_PAGE_SIZE 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#0001d0090001d017>)
 
!= CRC16_VALID 
<http://sbexr.rabexc.org/latest/sources/2d/f15386f9fe4f5a.html#0001300900013016>)
 
{ 
        dev_err 
<http://sbexr.rabexc.org/latest/sources/1c/d25b2fb3f904be.html#000670090006802b>(&sl->dev,
 
"bad CRC at offset %d\n", (int)off); 
        return -EINVAL 
<http://sbexr.rabexc.org/latest/sources/7f/c1319580667ad5.html#0001a0090001a011>
; 
 } } 

If I try to run these commands:
echo "12345678901234567890123456789012" > 
/sys/bus/w1/devices/23-000002eddd9b/eeprom
echo "1234567890123456789012345678901" > 
/sys/bus/w1/devices/23-000002eddd9b/eeprom
dmesg | tail
[80808.027040] w1_slave_driver 23-000002eddd9b: invalid offset/count off=0 
cnt=33
[80829.659168] w1_slave_driver 23-000002eddd9b: bad CRC at offset 0
 
I removed some output from my terminal and focused on these lines.
The errors found using dmesg looks to come from this section in the driver. 
If I send 33 bytes I get the invalid offset/count error and with 32 bytes I 
pass this section and get crc error.
Now I have to try to manually calculating the crc and see where it takes me.
 
onsdag 30 september 2020 kl. 13:16:09 UTC+2 skrev Sven Norinder:

> Maybe kernel must have crc enabled for 2433 writes?
> Last line implies something about writes.
>
> config W1_SLAVE_DS2433
>     tristate "4kb EEPROM family support (DS2433)"
>     help
>       Say Y here if you want to use a 1-wire
>       4kb EEPROM family device (DS2433).
>
> config W1_SLAVE_DS2433_CRC
>     bool "Protect DS2433 data with a CRC16"
>     depends on W1_SLAVE_DS2433
>     select CRC16
>     help
>       Say Y here to protect DS2433 data with a CRC16.
>       Each block has 30 bytes of data and a two byte CRC16.
>       Full block writes are only allowed if the CRC is valid.
>
> /Sven
>
> onsdag 30 september 2020 kl. 10:56:55 UTC+2 skrev Johan Lind:
>
>> Well, I have an i2c memory on the same board and to read and write to 
>> that I can use the following commands:
>> write
>> cat data.eeprom > /sys/bus/i2c/devices/2-0057/eeprom
>> read
>> cat /sys/bus/i2c/devices/2-0057/eeprom | hexdump
>>
>> I did try your suggestion of using dd but I could not get it to work.
>> root@beaglebone:/home/debian# dd if=/dev/zero 
>> of=/sys/bus/w1/devices/23-000002eddd9b/eeprom bs=32
>> dd: error writing '/sys/bus/w1/devices/23-000002eddd9b/eeprom': Invalid 
>> argument
>> 1+0 records in
>> 0+0 records out
>> 0 bytes copied, 0.0159578 s, 0.0 kB/s
>> root@beaglebone:/home/debian# 
>>
>> As the eeprom is written to contain data on another device, so I thought 
>> it would be enough to use /dev/zero as input.
>> Reading out data show no change of content (as expected consider the 
>> output from dd)
>> cat /sys/bus/w1/devices/23-000002eddd9b/eeprom | hexdump
>> 0000000 00ff 55aa  00ff 55aa  00ff 55aa  00ff 55aa
>> onsdag 30 september 2020 kl. 07:15:53 UTC+2 skrev Sven Norinder:
>>
>>> The eeprom probably is a device, not a filesystem.
>>> Use dd instead.
>>> /Sven
>>>
>>> tisdag 29 september 2020 kl. 17:59:14 UTC+2 skrev Johan Lind:
>>>
>>>> I tried with only a short (6 bytes) string but still the same behaviour.
>>>>
>>>>
>>>> tisdag 29 september 2020 kl. 17:45:47 UTC+2 skrev 
>>>> robert.sty...@gmail.com:
>>>>
>>>>> I suggest trying to write less than 32 bytes (the dmesg implies 
>>>>> something wrong with offset or count) -- create a file of less than 32 
>>>>> bytes and copy to eeprom
>>>>> cd ~
>>>>> echo "1234567890" > file10
>>>>> cp -T file10 /sys/bus/w1/devices/23-000002eddd9b/eeprom
>>>>>
>>>>> In the data sheet you need a much smaller R[PU] to write than read
>>>>> https://datasheets.maximintegrated.com/en/ds/DS2433.pdf
>>>>>
>>>>> On Tuesday, 29 September 2020 at 16:03:48 UTC+1 RobertCNelson wrote:
>>>>>
>>>>>> On Tue, Sep 29, 2020 at 9:55 AM 'Johan Lind' via BeagleBoard 
>>>>>> <beagl...@googlegroups.com> wrote: 
>>>>>> > 
>>>>>> > Yes, it does still show eeprom 
>>>>>> > 
>>>>>> > debian@beaglebone:~$ ls /sys/bus/w1/devices/23-000002eddd9b 
>>>>>> > driver eeprom id name power subsystem uevent 
>>>>>> > debian@beaglebone:~$ ls /sys/bus/w1/devices/ 
>>>>>> > 23-000002eddd9b w1_bus_master1 
>>>>>> > debian@beaglebone:~$ 
>>>>>> > debian@beaglebone:~$ ls -al /sys/bus/w1/devices/23-000002eddd9b/ 
>>>>>> > total 0 
>>>>>> > drwxrwxr-x 3 root gpio 0 Sep 29 14:00 . 
>>>>>> > drwxrwxr-x 4 root gpio 0 Sep 29 14:00 .. 
>>>>>> > lrwxrwxrwx 1 root gpio 0 Sep 29 14:00 driver -> 
>>>>>> ../../../bus/w1/drivers/w1_slave_driver 
>>>>>> > -rw-rw-r-- 1 root gpio 512 Sep 29 14:07 eeprom 
>>>>>>
>>>>>> Side note, you don't' have to be root, the "gpio" group is the 
>>>>>> default 
>>>>>> for debian.. 
>>>>>>
>>>>>> > -r--r--r-- 1 root gpio 4096 Sep 29 14:00 id 
>>>>>> > -r--r--r-- 1 root gpio 4096 Sep 29 14:00 name 
>>>>>> > drwxrwxr-x 2 root gpio 0 Sep 29 14:00 power 
>>>>>> > lrwxrwxrwx 1 root gpio 0 Sep 29 14:00 subsystem -> ../../../bus/w1 
>>>>>> > -rw-rw-r-- 1 root gpio 4096 Sep 29 14:00 uevent 
>>>>>> > debian@beaglebone:~$ 
>>>>>>
>>>>>> not sure why you can't write... 
>>>>>>
>>>>>> Regards, 
>>>>>>
>>>>>> -- 
>>>>>> Robert Nelson 
>>>>>> https://rcn-ee.com/ 
>>>>>>
>>>>>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/7b1e341d-8f26-4b44-90c9-3e160964f8a5n%40googlegroups.com.

Reply via email to