Mr Doug - | 2 Jun 05:57 2009
Picon

DS9090K Development kit


Can anyone on this list tell me if this development kit is still available. Maxim has it on their site but they
do not seem to be selling it.

If not is there any development kit available for OWFS.

Thanks, Doug

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
Paul Alfille | 2 Jun 14:28 2009
Picon

Re: DS9090K Development kit

There is no development kit specifically for OWFS, but devices from a few different vendors are known to work.

Among others:
ibuttonlink
Embedded Data Systems
Hobby Boards
AAG electronica
and Maxim itself.

For starter kits, try the DS9092K (ibuitton with USB)

Paul Alfille

On Mon, Jun 1, 2009 at 11:57 PM, Mr Doug - <dsc3507 <at> yahoo.com> wrote:

Can anyone on this list tell me if this development kit is still available. Maxim has it on their site but they do not seem to be selling it.

If not is there any development kit available for OWFS.

Thanks, Doug





------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Owfs-developers mailing list
Owfs-developers <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/owfs-developers
news4kmw | 6 Jun 14:19 2009
Picon

owshell fails with uclibc and libusb

Hi there,

long story...

compiled owfs, owshell-progs, owhttpd under uclibc (0.9.28) _without_
usb-support; all is running perfect.

compiled the same _with_ libusb; owfs is working well, but not owshell
and owhttpd.
(compiling libusb under uclibc is somewhat difficult, for missing g++.
nevertheless hope it's fine.) 
starting httpd is no problem, but next request kills the application,
and it's exactly the same with owserver.
here comes some debugging stuff (please forgive me):

router 3.4.0 # owhttpd --error_level=9 --error_print=2 --foreground -u
-p 8001
   CALL: ow_parsename.c:FS_ParsedName_anywhere(109) path=[]
   DEBUG: owlib.c:SetupTemperatureLimits(83) Globals temp limits 0C
100C (for simulated adapters)
    CALL: ow_parsename.c:FS_ParsedName_anywhere(109) path=[]
 usb_set_debug: Setting debugging level to 2 (on)
usb_os_init: Found USB VFS at /proc/bus/usb
usb_os_find_busses: Found 001
usb_os_find_busses: Skipping non bus directory devices
usb_os_find_devices: Found 002 on 001
usb_os_find_devices: Found 001 on 001
error obtaining child information: Inappropriate ioctl for device
CONNECT: ow_ds9490.c:USB_next(548) Adapter found: 001/002
 USB error: could not detach kernel driver from interface 0: No data
available
DEFAULT: ow_ds9490.c:DS9490_sub_open(482) Opened USB DS9490 adapter at
001/002.
    DATA: ow_ds9490.c:DS9490_setup_adapter(410) done (ret=0)
   DEBUG: ow_search.c:BUS_first(32) Start of directory path= device=00
00 00 00 00 00 00 00
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path= SN=00 00 00 00 00 00 00 00 last path=00 00 00 00 00 00 00 00
   DEBUG: ow_select.c:BUS_select(78) Clearing root branch
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_SetSpeed(1284) set flexible speed
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_ds9490.c:DS9490_next_both(1000) Index 0
   DEBUG: ow_ds9490.c:DS9490_directory(1074) Got 40 bytes from USB
search
   DEBUG: ow_ds9490.c:DS9490_directory(1101) gulp. Adding element 0:10
DE F0 A8 01 08 00 E2
   DEBUG: ow_ds9490.c:DS9490_directory(1101) gulp. Adding element 1:10
65 1B A9 01 08 00 38
   DEBUG: ow_ds9490.c:DS9490_directory(1101) gulp. Adding element 2:1C
7F 6C F7 04 00 00 1B
   DEBUG: ow_ds9490.c:DS9490_directory(1101) gulp. Adding element 3:3A
F6 E4 01 00 00 00 15
   DEBUG: ow_ds9490.c:DS9490_directory(1101) gulp. Adding element 4:81
70 D4 2A 00 00 00 18
   DEBUG: ow_ds9490.c:DS9490_next_both(1028) SN found: 10 DE F0 A8 01
08 00 E2
   DEBUG: ow_search.c:BUS_next(84) return = 0 | 10 DE F0 A8 01 08 00
E2
   DEBUG: ow_cache.c:Cache_Add_Device(355) 10 DE F0 A8 01 08 00 E2
bus=0
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 10 DE F0 A8
01 08 00 E2 pointer=(nil) index=-1 size=4
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path= SN=00 00 00 00 00 00 00 00 last path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_ds9490.c:DS9490_next_both(1000) Index 1
   DEBUG: ow_ds9490.c:DS9490_next_both(1028) SN found: 10 65 1B A9 01
08 00 38
   DEBUG: ow_search.c:BUS_next(84) return = 0 | 10 65 1B A9 01 08 00
38
   DEBUG: ow_cache.c:Cache_Add_Device(355) 10 65 1B A9 01 08 00 38
bus=0
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 10 65 1B A9
01 08 00 38 pointer=(nil) index=-1 size=4
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path= SN=00 00 00 00 00 00 00 00 last path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_ds9490.c:DS9490_next_both(1000) Index 2
   DEBUG: ow_ds9490.c:DS9490_next_both(1028) SN found: 1C 7F 6C F7 04
00 00 1B
   DEBUG: ow_search.c:BUS_next(84) return = 0 | 1C 7F 6C F7 04 00 00
1B
   DEBUG: ow_cache.c:Cache_Add_Device(355) 1C 7F 6C F7 04 00 00 1B
bus=0
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 1C 7F 6C F7
04 00 00 1B pointer=(nil) index=-1 size=4
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path= SN=00 00 00 00 00 00 00 00 last path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_ds9490.c:DS9490_next_both(1000) Index 3
   DEBUG: ow_ds9490.c:DS9490_next_both(1028) SN found: 3A F6 E4 01 00
00 00 15
   DEBUG: ow_search.c:BUS_next(84) return = 0 | 3A F6 E4 01 00 00 00
15
   DEBUG: ow_cache.c:Cache_Add_Device(355) 3A F6 E4 01 00 00 00 15
bus=0
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 3A F6 E4 01
00 00 00 15 pointer=(nil) index=-1 size=4
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path= SN=00 00 00 00 00 00 00 00 last path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_ds9490.c:DS9490_next_both(1000) Index 4
   DEBUG: ow_ds9490.c:DS9490_next_both(1028) SN found: 81 70 D4 2A 00
00 00 18
   DEBUG: ow_search.c:BUS_next(84) return = 0 | 81 70 D4 2A 00 00 00
18
   DEBUG: ow_cache.c:Cache_Add_Device(355) 81 70 D4 2A 00 00 00 18
bus=0
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 81 70 D4 2A
00 00 00 18 pointer=(nil) index=-1 size=4
 CONNECT: ow_ds9490.c:DS9490_detect_found(361) Good DS1421 tag found
for 001/002
 DEFAULT: ow_ds9490.c:DS9490_detect_found(368) Set DS9490 001/002
unique id to 81 70 D4 2A 00 00 00 18
   DEBUG: ow_net_server.c:ServerProcess(320) Wait for output device 0
to setup.
   DEBUG: ow_net_server.c:ServerProcess(323) Output device 0 setup
done.
   DEBUG: ow_net_server.c:ServerProcessOut(252) 0
   DEBUG: ow_zero.c:OW_Announce(150) end
   DEBUG: ow_net_server.c:ServerProcessOut(272) Output device 8001
setup is done. index=0
   DEBUG: ow_net_server.c:ServerProcessAccept(189) 8001[0] try lock 0
   DEBUG: ow_net_server.c:ServerProcessAccept(195) 8001[0] locked 0
---here my machine stops---

a ---browser click at 10.651BA9010800--- shows:
[... delt some boring stuff ... and left some ...]
--- OneWireQuery done
  DEBUG: ow_read.c:adjust_file_size(360) file_length=12 offset=0
size=12
   DEBUG: ow_cache.c:Cache_Get(662) 10 65 1B A9 01 08 00 38 size=8
IsUncachedDir=0
   DEBUG: ow_cache.c:Cache_Get_Common(919) Get from cache sn 10 65 1B
A9 01 08 00 38 pointer=0xb7ef30bc index=0 size=8
   DEBUG: ow_cache.c:Cache_Get_Common(956) value not found in cache
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path=/10.651BA9010800/trim SN=10 65 1B A9 01 08 00 38 last path=00 00
00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_transaction.c:BUS_transaction_single(83) select = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(107) readin = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path=/10.651BA9010800/trim SN=10 65 1B A9 01 08 00 38 last path=00 00
00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_transaction.c:BUS_transaction_single(83) select = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(107) readin = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
   DEBUG: ow_cache.c:Cache_Add(274) 10 65 1B A9 01 08 00 38 size=8
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 10 65 1B A9
01 08 00 38 pointer=0xb7ef30bc index=0 size=8
   DEBUG: ow_read.c:FS_r_given_bus(234) FS_r_local return=0
 Byte buffer Fowq_output_offset_and_size, length=12
--000: 20 20 20 20 20 20 20 35 36 31 38 37
   <       56187>
  DEBUG: ow_read.c:FS_r_given_bus(244) return 12
   DEBUG: ow_read.c:FS_read_distribute(206) /10.651BA9010800/trim
return 12
   DEBUG: ow_read.c:FS_read_postparse(97) /10.651BA9010800/trim return
12
   DEBUG: ow_parseobject.c:FS_OWQ_destroy_not_pn(123)
/10.651BA9010800/trim
    CALL: ow_parsename.c:FS_ParsedName_anywhere(109)
path=[/10.651BA9010800/trimblanket]
   DEBUG: ow_cache.c:Cache_Get_Device(743) 10 65 1B A9 01 08 00 38
   DEBUG: ow_cache.c:Cache_Get_Common(919) Get from cache sn 10 65 1B
A9 01 08 00 38 pointer=(nil) index=-1 size=4
   DEBUG: ow_cache.c:Cache_Get_Common(931) value found in cache
   DEBUG: ow_read.c:FS_read_postparse(78) /10.651BA9010800/trimblanket
   DEBUG: ow_read.c:FS_read_distribute(184)
/10.651BA9010800/trimblanket
   DEBUG: ow_read.c:FS_r_given_bus(217) start
 OWQ OneWireQuery structure of /10.651BA9010800/trimblanket
    OneWireQuery size=1 offset=0, extension=0
Byte buffer OneWireQuery buffer, length=1
--000: 00
   <.>
    OneWireQuery I=0 U=0 F=0 Y=0 D=Thu Jan  1 00:00:00 1970

--- OneWireQuery done
  DEBUG: ow_read.c:adjust_file_size(360) file_length=1 offset=0 size=1
   DEBUG: ow_cache.c:Cache_Get(662) 10 65 1B A9 01 08 00 38 size=8
IsUncachedDir=0
   DEBUG: ow_cache.c:Cache_Get_Common(919) Get from cache sn 10 65 1B
A9 01 08 00 38 pointer=0xb7ef30e0 index=0 size=8
   DEBUG: ow_cache.c:Cache_Get_Common(956) value not found in cache
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path=/10.651BA9010800/trimblanket SN=10 65 1B A9 01 08 00 38 last
path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_transaction.c:BUS_transaction_single(83) select = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(107) readin = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path=/10.651BA9010800/trimblanket SN=10 65 1B A9 01 08 00 38 last
path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_transaction.c:BUS_transaction_single(83) select = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(107) readin = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
   DEBUG: ow_cache.c:Cache_Add(274) 10 65 1B A9 01 08 00 38 size=8
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 10 65 1B A9
01 08 00 38 pointer=0xb7ef30e0 index=0 size=8
   DEBUG: ow_read.c:FS_r_given_bus(234) FS_r_local return=0
   DEBUG: ow_read.c:FS_r_given_bus(244) return 1
   DEBUG: ow_read.c:FS_read_distribute(206)
/10.651BA9010800/trimblanket return 1
   DEBUG: ow_read.c:FS_read_postparse(97) /10.651BA9010800/trimblanket
return 1
   DEBUG: ow_parseobject.c:FS_OWQ_destroy_not_pn(123)
/10.651BA9010800/trimblanket
    CALL: ow_parsename.c:FS_ParsedName_anywhere(109)
path=[/10.651BA9010800/trimvalid]
   DEBUG: ow_cache.c:Cache_Get_Device(743) 10 65 1B A9 01 08 00 38
   DEBUG: ow_cache.c:Cache_Get_Common(919) Get from cache sn 10 65 1B
A9 01 08 00 38 pointer=(nil) index=-1 size=4
   DEBUG: ow_cache.c:Cache_Get_Common(931) value found in cache
   DEBUG: ow_read.c:FS_read_postparse(78) /10.651BA9010800/trimvalid
   DEBUG: ow_read.c:FS_read_distribute(184) /10.651BA9010800/trimvalid
   DEBUG: ow_read.c:FS_r_given_bus(217) start
 OWQ OneWireQuery structure of /10.651BA9010800/trimvalid
    OneWireQuery size=1 offset=0, extension=0
Byte buffer OneWireQuery buffer, length=1
--000: 00
   <.>
    OneWireQuery I=0 U=0 F=0 Y=0 D=Thu Jan  1 00:00:00 1970

--- OneWireQuery done
  DEBUG: ow_read.c:adjust_file_size(360) file_length=1 offset=0 size=1
   DEBUG: ow_cache.c:Cache_Get(662) 10 65 1B A9 01 08 00 38 size=8
IsUncachedDir=0
   DEBUG: ow_cache.c:Cache_Get_Common(919) Get from cache sn 10 65 1B
A9 01 08 00 38 pointer=0xb7ef3104 index=0 size=8
   DEBUG: ow_cache.c:Cache_Get_Common(956) value not found in cache
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path=/10.651BA9010800/trimvalid SN=10 65 1B A9 01 08 00 38 last
path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_transaction.c:BUS_transaction_single(83) select = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(107) readin = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
   DEBUG: ow_select.c:BUS_select(71) Selecting a path (and device)
path=/10.651BA9010800/trimvalid SN=10 65 1B A9 01 08 00 38 last
path=00 00 00 00 00 00 00 00
    DATA: ow_ds9490.c:DS9490_reset(855) start
    DATA: ow_ds9490.c:DS9490_reset(909) ok
   DEBUG: ow_transaction.c:BUS_transaction_single(83) select = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(98) send = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(107) readin = 0
   DEBUG: ow_transaction.c:BUS_transaction_single(167) end = 0
   DEBUG: ow_cache.c:Cache_Add(274) 10 65 1B A9 01 08 00 38 size=8
   DEBUG: ow_cache.c:Cache_Add_Common(449) Add to cache sn 10 65 1B A9
01 08 00 38 pointer=0xb7ef3104 index=0 size=8
   DEBUG: ow_read.c:FS_r_given_bus(234) FS_r_local return=0
   DEBUG: ow_read.c:FS_r_given_bus(244) return 1
   DEBUG: ow_read.c:FS_read_distribute(206) /10.651BA9010800/trimvalid
return 1
   DEBUG: ow_read.c:FS_read_postparse(97) /10.651BA9010800/trimvalid
return 1
   DEBUG: ow_parseobject.c:FS_OWQ_destroy_not_pn(123)
/10.651BA9010800/trimvalid
    CALL: ow_parsename.c:FS_ParsedName_anywhere(109)
path=[/10.651BA9010800/type]
   DEBUG: ow_cache.c:Cache_Get_Device(743) 10 65 1B A9 01 08 00 38
   DEBUG: ow_cache.c:Cache_Get_Common(919) Get from cache sn 10 65 1B
A9 01 08 00 38 pointer=(nil) index=-1 size=4
   DEBUG: ow_cache.c:Cache_Get_Common(931) value found in cache
   DEBUG: ow_read.c:FS_read_postparse(78) /10.651BA9010800/type
   DEBUG: ow_read.c:FS_read_distribute(184) /10.651BA9010800/type
   DEBUG: ow_read.c:FS_r_given_bus(217) start
 OWQ OneWireQuery structure of /10.651BA9010800/type
    OneWireQuery size=32 offset=0, extension=0
Byte buffer OneWireQuery buffer, length=32
--000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   <................................>
    OneWireQuery I=0 U=0 F=0 Y=0 D=Thu Jan  1 00:00:00 1970

--- OneWireQuery done
  DEBUG: ow_read.c:adjust_file_size(360) file_length=32 offset=0
size=32
 Byte buffer Fowq_output_offset_and_size, length=7
--000: 44 53 31 38 53 32 30
   <DS18S20>
  DEBUG: ow_read.c:FS_r_given_bus(234) FS_r_local return=0
 OWQ OneWireQuery structure of /10.651BA9010800/type
    OneWireQuery size=32 offset=0, extension=0
Byte buffer OneWireQuery buffer, length=32
--000: 44 53 31 38 53 32 30 00 00 00 00 00 00 00 00 00
--016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   <DS18S20.........................>
    OneWireQuery I=7 U=7 F=3.45846E-323 Y=7 D=Thu Jan  1 00:00:07 1970

--- OneWireQuery done
  DEBUG: ow_read.c:FS_r_given_bus(244) return 7
   DEBUG: ow_read.c:FS_read_distribute(206) /10.651BA9010800/type
return 7
   DEBUG: ow_read.c:FS_read_postparse(97) /10.651BA9010800/type return
7
   DEBUG: ow_parseobject.c:FS_OWQ_destroy_not_pn(123)
/10.651BA9010800/type
   DEBUG: ow_dir.c:FS_dir_both(169) ret=0
   DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /10.651BA9010800
   DEBUG: ow_net_server.c:ServerProcessHandler(165) Normal exit.
 router 3.4.0 #

same start as above and after machine stop a ---ctrl-c----- shows:
DEBUG: ow_net_server.c:ServerProcess(345) break signo=0
   DEBUG: ow_net_server.c:ServerProcess(353)
ow_net_server.c:ServerProcess() shutdown initiated
   DEBUG: ow_net_server.c:ServerProcess(357) Shutting down 0 of 1
thread 1026
   DEBUG: ow_net_server.c:ServerProcess(371) pthread_kill (0 of 1)
tid=1026 signo=15 rc=0 [Success]
   DEBUG: ow_net_server.c:ServerProcess(377)
ow_net_server.c:ServerProcess() all threads cancelled
   DEBUG: ow_net_server.c:ServerProcess(381) join 1026
   DEBUG: ow_net_server.c:ServerProcessAccept(200)
shutdown_in_progress 8001[0] accept 0
   DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(177) unlock 1026
   DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(179) unlock 1026
done
   DEBUG: ow_net_server.c:ServerProcessAccept(216)  8001[0] unlock 0
   DEBUG: ow_net_server.c:ServerProcessAccept(220) 8001[0]
shutdown_in_progress 0 return
   DEBUG: ow_net_server.c:ServerProcessOut(281) 0 CLOSING (8001)
   DEBUG: ow_net_server.c:ServerProcessOut(283) Normal exit.
router 3.4.0 #

anybody out there, who can give me a hint?

TIA'n cheers
Karl M.

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
Paul Alfille | 6 Jun 15:37 2009
Picon

Re: owshell fails with uclibc and libusb

When you say that everything works without libusb, how did you test?
Serial or fake devices for testing?

I'll look through the debug data and to see if I can find the problem.
Which version of owfs are you using?

Paul Alfille

On Sat, Jun 6, 2009 at 8:19 AM,  <news4kmw <at> web.de> wrote:
> Hi there,
>
> long story...
>
> compiled owfs, owshell-progs, owhttpd under uclibc (0.9.28) _without_
> usb-support; all is running perfect.
>
> compiled the same _with_ libusb; owfs is working well, but not owshell
> and owhttpd.
> (compiling libusb under uclibc is somewhat difficult, for missing g++.
> nevertheless hope it's fine.)
> starting httpd is no problem, but next request kills the application,
> and it's exactly the same with owserver.

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
news4kmw | 6 Jun 19:39 2009
Picon

Re: owshell fails with uclibc and libusb

Hallo Paul,

without libusb I'm using serial DS 9097U-009.
Version is 2.7p21, also tested with p19 and p13, same effect.

Regards
Karl M. Weckler

---
Paul Alfille wrote: 

When you say that everything works without libusb, how did you test?
Serial or fake devices for testing?

I'll look through the debug data and to see if I can find the problem.
Which version of owfs are you using?

Paul Alfille

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
Steinar Midtskogen | 8 Jun 08:43 2009

Re: Two owserver problems

Paul Alfille <paul.alfille <at> gmail.com> writes:

> Great, a nice test case. Should be fixable. I like the shell script approach.

...
>     The problem seems to be that owserver is relatively fine as long as
>     the requests come in an orderly fashion, such as in this script:
...

>     But if I change the script to requesting everything at the same time,
>     like this:
>
>     #!/bin/sh
>
>     while true; do
>       owget -s 3000 uncached/10.7F1914000800/temperature &
>       owget -s 3000 20.E0C700000000/volt.ALL &
>       owget -s 3000 uncached/1D.0A5201000000/counters.A &
>       owget -s 3000 10.7F1914000800/temperature &
>       owget -s 3000 26.22FB4F000000/temperature &
>       owget -s 3000 26.22FB4F000000/VDD &
>       sleep 5
>     done
>
>     then owserver breaks within seconds, owget processes pile up because
>     owserver doesn't respond for some files.  Eventally owserver might crash.

Anything I can do to debug this?  It's easy to reproduce.  Owserver
seems pretty fragile, i.e. it'll crash under some load.

I see a few instances of SIGPIPE signals, I'm not sure whether this is
a problem or gdb catching what owserver otherwise will catch and
handle.  This might be caused by a client terminating prematurely.
And I also get abort()s, which seems like something else.

Here's some gdb output while running owserver:

Program received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x458f3950 (LWP 32021)]
0x00007f36fdbe78e3 in writev () from /lib/libc.so.6
(gdb) bt
#0  0x00007f36fdbe78e3 in writev () from /lib/libc.so.6
#1  0x0000000000402d27 in ToClient (file_descriptor=9, machine_order_cm=0x458f2ea0, data=0x0) at to_client.c:80
#2  0x000000000040503d in SingleHandler (hd=0x458f2f90) at handler.c:215
#3  0x0000000000404b2b in Handler (file_descriptor=9) at handler.c:119
#4  0x00007f36fe789faa in ServerProcessHandler (arg=0x60bd80) at ow_net_server.c:158
#5  0x00007f36fde7f3f7 in start_thread () from /lib/libpthread.so.0
#6  0x00007f36fdbeeb3d in clone () from /lib/libc.so.6
#7  0x0000000000000000 in ?? ()
(gdb) up
#1  0x0000000000402d27 in ToClient (file_descriptor=9, machine_order_cm=0x458f2ea0, data=0x0) at to_client.c:80
80                     ret = writev(file_descriptor, io, nio) != (ssize_t) (io[0].iov_len + io[1].iov_len);

Similar:

Writev byte buffer ionr=1/2 length=24
--000: 00 00 00 00 00 00 00 0C 00 00 00 0C 00 00 01 01
--016: 00 00 00 0C 00 00 00 00
   <........................>
Writev byte buffer ionr=2/2 length=12
--000: 20 20 20 20 20 20 20 20 34 2E 38 31
   <        4.81>

Program received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x43ec1950 (LWP 23028)]
0x00007f5cf2c008e3 in writev () from /lib/libc.so.6
(gdb) bt
#0  0x00007f5cf2c008e3 in writev () from /lib/libc.so.6
#1  0x0000000000402d27 in ToClient (file_descriptor=10, machine_order_cm=0x43ec1050,
data=0x60a9b0 "        4.81") at to_client.c:80
#2  0x00000000004046fb in DataHandler (v=0x47ec8f90) at data.c:180
#3  0x00007f5cf2e983f7 in start_thread () from /lib/libpthread.so.0
#4  0x00007f5cf2c07b3d in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

A crash:

[New Thread 0x44210950 (LWP 27589)]
   CALL: data.c:DataHandler(125) Read message
  DEBUG: read.c:ReadHandler(55) ReadHandler:
  DEBUG: read.c:ReadHandler(61) ReadHandler: From Client sm->payload=25 sm->size=51 sm->offset=0
  DEBUG: read.c:ReadHandler(81) ReadHandler: call FS_read_postparse on /20.E0C700000000/volt.ALL
  DEBUG: ow_read.c:FS_read_postparse(78) /20.E0C700000000/volt.ALL
  DEBUG: ow_read.c:FS_read_distribute(196) /20.E0C700000000/volt.ALL
  DEBUG: ow_read.c:FS_r_given_bus(229) start
OWQ OneWireQuery structure of /20.E0C700000000/volt.ALL
    OneWireQuery size=51 offset=0, extension=-1
Byte buffer OneWireQuery buffer, length=51
--000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--048: 00 00 00
   <...................................................>
    OneWireQuery I=6335920 U=6335920 F=3.13036E-317 Y=6335920 D=Sun Mar 15 08:58:40 1970

--- OneWireQuery done
*** glibc detected *** /usr/local/bin/owserver: malloc(): memory corruption (fast):
0x000000000060c3a0 ***
   CALL: data.c:DataHandler(102) DataHandler: parse path=uncached/1D.0A5201000000/counters.A
  DEBUG: ow_parseobject.c:FS_OWQ_create(26) uncached/1D.0A5201000000/counters.A
======= Backtrace: =========
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[uncached/1D.0A5201000000/counters.A]
  DEBUG: ow_cache.c:Cache_Get_Device(856) 1D 0A 52 01 00 00 00 95
/lib/libc.so.6[0x7f9c544003b2]
/lib/libc.so.6(__libc_malloc+0x90)[0x7f9c54401360]
  DEBUG: ow_cache.c:Cache_Get_Common(1086) Get from cache sn 1D 0A 52 01 00 00 00 95
pointer=0x7f9c55251cc0 index=0 size=4
/lib/libc.so.6(tsearch+0x10a)[0x7f9c544610ea]
/usr/local/lib/libow-2.7.so.21(LockGet+0x160)[0x7f9c54ffb3a1]
/usr/local/lib/libow-2.7.so.21[0x7f9c55007130]
/usr/local/lib/libow-2.7.so.21(FS_read_distribute+0x212)[0x7f9c55006de7]
/usr/local/lib/libow-2.7.so.21[0x7f9c5500671e]
/usr/local/lib/libow-2.7.so.21(FS_read_postparse+0x2cc)[0x7f9c55006598]
/usr/local/bin/owserver[0x4036cf]
/usr/local/bin/owserver[0x4042dd]
/lib/libpthread.so.0[0x7f9c546f33f7]
  DEBUG: ow_cache.c:Cache_Get_Common(1099) value found in cache. Remaining life: 115 seconds.
  DEBUG: ow_presence.c:CheckPresence(75) Found device on bus 0
  DEBUG: ow_parsename.c:FS_ParsedName_anywhere(199) Dirlength=26 </uncached/1D.0A5201000000/counters.A>
   CALL: data.c:DataHandler(125) Read message
  DEBUG: read.c:ReadHandler(55) ReadHandler:
  DEBUG: read.c:ReadHandler(61) ReadHandler: From Client sm->payload=36 sm->size=12 sm->offset=0
  DEBUG: read.c:ReadHandler(81) ReadHandler: call FS_read_postparse on /uncached/1D.0A5201000000/counters.A
  DEBUG: ow_read.c:FS_read_postparse(78) /uncached/1D.0A5201000000/counters.A
  DEBUG: ow_read.c:FS_read_distribute(196) /uncached/1D.0A5201000000/counters.A
  DEBUG: ow_read.c:FS_r_given_bus(229) start
OWQ OneWireQuery structure of /uncached/1D.0A5201000000/counters.A
    OneWireQuery size=12 offset=0, extension=0
01000000/counters.A

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x48218950 (LWP 27587)]
0x00007f9c543bd095 in raise () from /lib/libc.so.6
(gdb) bt
#0  0x00007f9c543bd095 in raise () from /lib/libc.so.6
#1  0x00007f9c543beaf0 in abort () from /lib/libc.so.6
#2  0x00007f9c543f7a7b in ?? () from /lib/libc.so.6
#3  0x00007f9c544003b2 in ?? () from /lib/libc.so.6
#4  0x00007f9c54401360 in malloc () from /lib/libc.so.6
#5  0x00007f9c544610ea in tsearch () from /lib/libc.so.6
#6  0x00007f9c54ffb3a1 in LockGet (pn=0x482180a8) at ow_locks.c:173
#7  0x00007f9c55007130 in FS_r_given_bus (owq=0x48218090) at ow_read.c:244
#8  0x00007f9c55006de7 in FS_read_distribute (owq=0x48218090) at ow_read.c:206
#9  0x00007f9c5500671e in FS_read_real (owq=0x48218090) at ow_read.c:109
#10 0x00007f9c55006598 in FS_read_postparse (owq=0x48218090) at ow_read.c:87
#11 0x00000000004036cf in ReadHandler (hd=0x46213f90, cm=0x48218050, owq=0x48218090) at read.c:86
#12 0x00000000004042dd in DataHandler (v=0x46213f90) at data.c:126
#13 0x00007f9c546f33f7 in start_thread () from /lib/libpthread.so.0
#14 0x00007f9c54462b3d in clone () from /lib/libc.so.6
#15 0x0000000000000000 in ?? ()
(gdb) up
#1  0x00007f9c543beaf0 in abort () from /lib/libc.so.6
(gdb) up
#2  0x00007f9c543f7a7b in ?? () from /lib/libc.so.6
(gdb) up
#3  0x00007f9c544003b2 in ?? () from /lib/libc.so.6
(gdb) up
#4  0x00007f9c54401360 in malloc () from /lib/libc.so.6
(gdb) up
#5  0x00007f9c544610ea in tsearch () from /lib/libc.so.6
(gdb) up
#6  0x00007f9c54ffb3a1 in LockGet (pn=0x482180a8) at ow_locks.c:173
173                    if ((opaque = (struct dev_opaque *)tsearch(dlock, &(pn->selected_connection->dev_db),
dev_compare)) == NULL) { // unfound and uncreatable
(gdb) print dlock
$1 = (struct devlock *) 0x60c240
(gdb) print *dlock
$2 = {lock = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = -1, __spins = 0, __list =
{__prev = 0x0, __next = 0x0}}, 
    __size = '\0' <repeats 16 times>, "", '\0' <repeats 19 times>, __align = 0}, sn = " \000\000\000\000", users
= 0}

Here's the output from owserver when I do an owget which never
finishes, but owserver keeps running:

owget -s 3000 26.22FB4F000000/VDD

  DEBUG: ow_net_server.c:ServerProcessAccept(203) 3000[1082530128] accept 0 fd=17
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(177) unlock 1082530128
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(179) unlock 1082530128 done
  DEBUG: ow_net_server.c:ServerProcessAccept(216)  3000[1082530128] unlock 0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 24 bytes Time:(10,0)
Byte buffer NETREAD, length=24
--000: 00 00 00 00 00 00 00 14 00 00 00 07 00 00 01 0A
--016: 00 00 00 00 00 00 00 00
   <........................>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=24 nleft=0 n-nleft=24
  DEBUG: from_client.c:FromClient(65) FromClient payload=20 size=0 type=7 sg=0x10A offset=0
  DEBUG: from_client.c:FromClient(73) FromClient (no servermessage) payload=20 size=0 type=7
sg=0x10A offset=0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 20 bytes Time:(10,0)
Byte buffer NETREAD, length=20
--000: 32 36 2E 32 32 46 42 34 46 30 30 30 30 30 30 2F
--016: 56 44 44 00
   <26.22FB4F000000/VDD.>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=20 nleft=0 n-nleft=20
   CALL: data.c:DataHandler(102) DataHandler: parse path=26.22FB4F000000/VDD
  DEBUG: ow_parseobject.c:FS_OWQ_create(26) 26.22FB4F000000/VDD
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[26.22FB4F000000/VDD]
  DEBUG: ow_cache.c:Cache_Get_Device(856) 26 22 FB 4F 00 00 00 15
  DEBUG: ow_cache.c:Cache_Get_Common(1086) Get from cache sn 26 22 FB 4F 00 00 00 15
pointer=0x7f855d33c420 index=0 size=4
  DEBUG: ow_cache.c:Cache_Get_Common(1099) value found in cache. Remaining life: 57 seconds.
  DEBUG: ow_presence.c:CheckPresence(75) Found device on bus 0
  DEBUG: ow_parsename.c:FS_ParsedName_anywhere(199) Dirlength=17 </26.22FB4F000000/VDD>
   CALL: data.c:DataHandler(145) Directory message (all at once)
  DEBUG: dirall.c:DirallHandler(66) OWSERVER Dir-All SpecifiedBus=0 path = /26.22FB4F000000/VDD
  DEBUG: ow_dir.c:FS_dir_remote(74) path=/26.22FB4F000000/VDD
   CALL: ow_dir.c:FS_dir_both(102) path=/26.22FB4F000000/VDD
  DEBUG: ow_dir.c:FS_dir_both(186) ret=-20
  DEBUG: ow_parseobject.c:FS_OWQ_destroy(141) /26.22FB4F000000/VDD
  DEBUG: ow_parsename.c:FS_ParsedName_destroy(64) /26.22FB4F000000/VDD
  DEBUG: data.c:DataHandler(162) DataHandler: FS_ParsedName_destroy done
  DEBUG: data.c:DataHandler(176) DataHandler: cm.ret=-20
  DEBUG: to_client.c:ToClient(60) payload=0 size=0, ret=-20, sg=0x10A offset=0 
Writev byte buffer ionr=1/1 length=24
--000: 00 00 00 00 00 00 00 00 FF FF FF EC 00 00 01 0A
--016: 00 00 00 00 00 00 00 00
   <........................>
  DEBUG: data.c:DataHandler(193) DataHandler: done
  DEBUG: ow_net_server.c:ServerProcessAccept(243) 1082530128 CLOSING
  DEBUG: ow_net_server.c:ServerProcessAccept(189) 3000[1082530128] try lock 0
  DEBUG: ow_net_server.c:ServerProcessAccept(195) 3000[1082530128] locked 0
  DEBUG: ow_net_server.c:ServerProcessAccept(203) 3000[1082530128] accept 0 fd=5
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(177) unlock 1082530128
  DEBUG: ow_net_server.c:ServerProcessAcceptUnlock(179) unlock 1082530128 done
  DEBUG: ow_net_server.c:ServerProcessAccept(216)  3000[1082530128] unlock 0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 24 bytes Time:(10,0)
Byte buffer NETREAD, length=24
--000: 00 00 00 00 00 00 00 14 00 00 00 02 00 00 01 0A
--016: 00 00 1F A0 00 00 00 00
   <........................>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=24 nleft=0 n-nleft=24
  DEBUG: from_client.c:FromClient(65) FromClient payload=20 size=8096 type=2 sg=0x10A offset=0
  DEBUG: from_client.c:FromClient(73) FromClient (no servermessage) payload=20 size=8096 type=2
sg=0x10A offset=0
  DEBUG: ow_tcp_read.c:tcp_read(60) attempt 20 bytes Time:(10,0)
Byte buffer NETREAD, length=20
--000: 32 36 2E 32 32 46 42 34 46 30 30 30 30 30 30 2F
--016: 56 44 44 00
   <26.22FB4F000000/VDD.>
  DEBUG: ow_tcp_read.c:tcp_read(108) n=20 nleft=0 n-nleft=20
   CALL: data.c:DataHandler(102) DataHandler: parse path=26.22FB4F000000/VDD
  DEBUG: ow_parseobject.c:FS_OWQ_create(26) 26.22FB4F000000/VDD
   CALL: ow_parsename.c:FS_ParsedName_anywhere(115) path=[26.22FB4F000000/VDD]
  DEBUG: ow_cache.c:Cache_Get_Device(856) 26 22 FB 4F 00 00 00 15
  DEBUG: ow_cache.c:Cache_Get_Common(1086) Get from cache sn 26 22 FB 4F 00 00 00 15
pointer=0x7f855d33c420 index=0 size=4
  DEBUG: ow_cache.c:Cache_Get_Common(1099) value found in cache. Remaining life: 57 seconds.
  DEBUG: ow_presence.c:CheckPresence(75) Found device on bus 0
  DEBUG: ow_parsename.c:FS_ParsedName_anywhere(199) Dirlength=17 </26.22FB4F000000/VDD>
   CALL: data.c:DataHandler(125) Read message
  DEBUG: read.c:ReadHandler(55) ReadHandler:
  DEBUG: read.c:ReadHandler(61) ReadHandler: From Client sm->payload=20 sm->size=8096 sm->offset=0
  DEBUG: read.c:ReadHandler(81) ReadHandler: call FS_read_postparse on /26.22FB4F000000/VDD
  DEBUG: ow_read.c:FS_read_postparse(78) /26.22FB4F000000/VDD
  DEBUG: ow_read.c:FS_read_distribute(196) /26.22FB4F000000/VDD
  DEBUG: ow_read.c:FS_r_given_bus(229) start
OWQ OneWireQuery structure of /26.22FB4F000000/VDD
    OneWireQuery size=8096 offset=0, extension=0
  DEBUG: ow_net_server.c:ServerProcessAccept(243) 1082530128 CLOSING
Byte buffer OneWireQuery buffer, length=8096
--000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--048: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   <................................................................>
    OneWireQuery I=0 U=0 F=0 Y=0 D=Thu Jan  1 01:00:00 1970

--- OneWireQuery done
  DEBUG: ow_net_server.c:ServerProcessAccept(189) 3000[1082530128] try lock 0
  DEBUG: ow_net_server.c:ServerProcessAccept(195) 3000[1082530128] locked 0
  DEBUG: handler.c:Handler(150) OWSERVER handler done
  DEBUG: ow_net_server.c:ServerProcessHandler(165) Normal exit.
  DEBUG: to_client.c:ToClient(56) Send delay message
  DEBUG: to_client.c:ToClient(60) payload=-1 size=0, ret=0, sg=0x0 offset=0 
  DEBUG: to_client.c:ToClient(56) Send delay message
  DEBUG: to_client.c:ToClient(60) payload=-1 size=0, ret=0, sg=0x0 offset=0 
  DEBUG: to_client.c:ToClient(56) Send delay message
... etc ...

--

-- 
Steinar ; NIL DIFFICILE VOLENTI ; http://latinitas.org ; http://voksenlia.net

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
Andrew | 7 Jun 13:20 2009
Picon

Problem: no devices discovered

Hi,
 I have serveral 1-wire devices connected to a DS9097U. I was using a 
program I hacked together several years ago, but thought I would use owfs as 
it looks a lot better than what I wrote.
    When I start owfs it creates the directory structure, but there aren't 
any devices listed. I am running Ubuntu 9.04 x64. I have downloaded the 
latest version of owfs, version 2.7p21. I have the 9097 connected to the 
second comm port.

    I can run the program called tstfind that comes from the Dallas website 
and it discovers all the devices:

#./tstfind /dev/ttyS1
Port opened: /dev/ttyS1

/---------------------------------------------
  Loop to find all iButton on 1-Wire Net.

-------------------- Start of search
(1) B80008006E96E610
(2) B10000004AB12710
(3) CB00000041B59928
(4) 15000000477BE328
(5) AC00000019954912
(6) 330000000F6DCD12
(7) DB00000019B72312
(8) C100000019B0AB12
(9) 9200000001056A1D
-------------------- End of search

-------------------- Start of search
(1) B80008006E96E610
(2) B10000004AB12710
(3) CB00000041B59928
^C<< CTRL-C key abort >>-------------------- End of search

Closing port /dev/ttyS1.
#

    I stop tstfind and start owfs. It creates the directory structure but 
does not discover any devices.

# ./owfs -d /dev/ttyS1 /var/1-wire/
# ls /var/1-wire/ -l
total 0
drwxr-xr-x 1 root root  8 2009-06-07 22:45 bus.0
drwxr-xr-x 1 root root  8 2009-06-07 22:45 settings
drwxr-xr-x 1 root root  8 2009-06-07 22:45 statistics
drwxr-xr-x 1 root root 30 2009-06-07 22:45 structure
drwxr-xr-x 1 root root  8 2009-06-07 22:45 system
drwxr-xr-x 1 root root  8 2009-06-07 22:45 uncached
#

    I have tried configuring owfs with the default options, and with the 
following options.
# 
./configure --disable-usb --disable-parport --disable-w1 --disable-ha7 --disable-i2c

    I have run owfs with error_level=9, and the last debug output is:
.....
Byte buffer Serial read:, length=1
--000: CD
   <.>
  DEBUG: owfs.c:main(151) fuse_mnt_opt=[(null)]
   DEBUG: owfs.c:main(153) fuse_open_opt=[(null)]
#

    There is no other debug output after this. owfs is still running. As 
owfs has created bus.0, settings, statistics etc I assume that FUSE is 
working correctly. I have tried launching owfs as both a user and as root 
via sudo, there has been no difference.

    Now I'm stuck and don't know where to go. Any suggestions would be 
appreciated.

Andrew Day

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
Paul Alfille | 8 Jun 18:41 2009
Picon

Re: Problem: no devices discovered

Thanks for the report (and you extensive testing). Your scenario
_should_ work. :}

Just tested my DS9097U. Note that the serial port has to be accessed
as root. I don't know how your permissions are set up.

paul <at> amd64:~> sudo /opt/owfs/bin/owfs -d /dev/ttyS0 -m 1wire
root's password:
paul <at> amd64:~> sudo ls -l 1wire
total 0
drwxrwxrwx 1 root root  8 2009-06-08 12:21 01.5F50CA090000
drwxrwxrwx 1 root root  8 2009-06-08 12:21 09.BCCA79030000
drwxrwxrwx 1 root root  8 2009-06-08 12:21 10.101454000800
drwxrwxrwx 1 root root  8 2009-06-08 12:21 12.C4DF1F000000
drwxrwxrwx 1 root root  8 2009-06-08 12:21 22.367A03000000
drwxrwxrwx 1 root root  8 2009-06-08 12:21 2C.1B7900000000
drwxrwxrwx 1 root root  8 2009-06-08 12:21 2C.66FE04000000
drwxrwxrwx 1 root root  8 2009-06-08 12:21 89.BD29C300705E
drwxr-xr-x 1 root root  8 2009-06-08 12:21 alarm
drwxr-xr-x 1 root root  8 2009-06-08 12:21 bus.0
drwxr-xr-x 1 root root  8 2009-06-08 12:21 settings
drwxrwxrwx 1 root root  8 2009-06-08 12:21 simultaneous
drwxr-xr-x 1 root root  8 2009-06-08 12:21 statistics
drwxr-xr-x 1 root root 30 2009-06-08 12:21 structure
drwxr-xr-x 1 root root  8 2009-06-08 12:21 system
drwxr-xr-x 1 root root  8 2009-06-08 12:21 uncached

Then I tried your configuration:
> ./configure --disable-usb --disable-parport --disable-w1 --disable-ha7 --disable-i2c
and it still works well.

So the first test would be to try:
# ./owfs --fake=10 /var/1-wire/
To see if the problem is the serial port/adapter or the FUSE setup.

>
>    I have run owfs with error_level=9, and the last debug output is:
> .....
> Byte buffer Serial read:, length=1
> --000: CD
>   <.>
>  DEBUG: owfs.c:main(151) fuse_mnt_opt=[(null)]
>   DEBUG: owfs.c:main(153) fuse_open_opt=[(null)]

Add --foreground so the output comes to the console.

Paul Alfille

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
Paul Alfille | 10 Jun 04:21 2009
Picon

Re: Two owserver problems

Hi Steinar,

I've been playing with your setup, and noticed one design problem
right away -- currently there is no throttling of the number of
queries queued by owserver.
The loop can wrap around while owserver is still busy with the prior
set of requests.

I'm not sure of the best way to handle this. Some thoughts:
1. limit the total requests being processed at the same time,
   A  by not accepting new sockets until there is space, or
   B. by returning an EBUSY error message.
2. try to merge requests. (Only works if the same request is pending
-- not certain, and messy).
3. cancel older pending requests, either in progress, or ones waiting
for the bus to be free.
4. limit uncached requests
5. limit slow requests -- e.g. temperature and humidity
    A no limit on in-memory data (like device name)
    B. no limit on cached data

In terms of ease of implementation easiest to hardest 1,4,5,3,2
In terms of least surprise to users: 2,1,4,3,5.

So I'd like #1. (or #5)

How would this be handled in a typical use case, say 1 thread reading
temperature in a tight loop and a second doing occational monitoring
and control?
The loop thread would accept the busy and move on, while the control
would repeat on busy to get a reading.

Still, I need thoughts and input on a design change like this.

Paul Alfille

On Mon, Jun 8, 2009 at 2:43 AM, Steinar Midtskogen<steinar <at> latinitas.org> wrote:
>>     The problem seems to be that owserver is relatively fine as long as
>>     the requests come in an orderly fashion, such as in this script:
> ...
>
>>     But if I change the script to requesting everything at the same time,
>>     like this:
>>
>>     #!/bin/sh
>>
>>     while true; do
>>       owget -s 3000 uncached/10.7F1914000800/temperature &
>>       owget -s 3000 20.E0C700000000/volt.ALL &
>>       owget -s 3000 uncached/1D.0A5201000000/counters.A &
>>       owget -s 3000 10.7F1914000800/temperature &
>>       owget -s 3000 26.22FB4F000000/temperature &
>>       owget -s 3000 26.22FB4F000000/VDD &
>>       sleep 5
>>     done
>>
>>     then owserver breaks within seconds, owget processes pile up because
>>     owserver doesn't respond for some files.  Eventally owserver might crash.
>
> Anything I can do to debug this?  It's easy to reproduce.  Owserver
> seems pretty fragile, i.e. it'll crash under some load.
>

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
Steinar Midtskogen | 10 Jun 06:50 2009

Re: Two owserver problems

Hi Paul,

> I'm not sure of the best way to handle this. Some thoughts:
> 1. limit the total requests being processed at the same time,
>    A  by not accepting new sockets until there is space, or
>    B. by returning an EBUSY error message.
> 2. try to merge requests. (Only works if the same request is pending
> -- not certain, and messy).
> 3. cancel older pending requests, either in progress, or ones waiting
> for the bus to be free.
> 4. limit uncached requests
> 5. limit slow requests -- e.g. temperature and humidity
>     A no limit on in-memory data (like device name)
>     B. no limit on cached data

In my opinion, the beauty of owfs is (for the most part) that it hides
all the low level complexity and allows the bus to be shared by
several users/applications.  So the expected behaviour probably is
that requests should only take longer time in busy situations, not
fail.  Of course, only up to a certain point where the user instead
would expect a timeout (EBUSY is probably ok if there are dozens of
requests already pending).

For my application (since I'm unfamiliar with the owfs code) I was
considering adding an extra thread doing all the queueing and the
actual OW_gets.  The queue can try to do a couple of clever things to
speed up processing/prevent the queue from growing too fast:

1) merge requests for the same value (I guess caching in a way already
does this, so requests for uncached values could be changed to cached
if there already is a pending request for the uncached value)

2) do some reordering so that requests for values on the same branches
get grouped to avoid a lot of switching (if the switching takes any
time to speak of).

As a quick fix to at least avoid crashes/lockups #1 looks good and may
also be a safeguard if more advanced queueing is adpopted later.

--

-- 
Steinar

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects

Gmane