×

INDI Library v2.0.7 is Released (01 Apr 2024)

Bi-monthly release with minor bug fixes and improvements

Driver OnStep (LX200 like) for INDI

  • Posts: 65
  • Thank you received: 4
@james_lan try Github desktop.  When i started to use it git started to make more sense too me.

desktop.github.com/
2 years 5 months ago #77145

Please Log in or Create an account to join the conversation.

  • Posts: 161
  • Thank you received: 39
It makes sense, I'm just easily distracted. (If you look at the last commits, there's one where I fixed something, committed, pushed, and forgot to actually save the fix.)

Also that doesn't work on Linux.
2 years 5 months ago #77157

Please Log in or Create an account to join the conversation.

  • Posts: 322
  • Thank you received: 31
Lots of errors and issues in today's update from Jasem's PPA.

indi-bin 1.9.3~202111111245~ubuntu18.04.1
libindi-data 1.9.3~202111111245~ubuntu18.04.1

All this with OnStep 4.24m.

First, there is the "unable to parse respone".
Then, the error setting site latitude coordinates (I have KStars set time and location of other devices).

And it tries to access focusers, although I have none enabled.

And when I try to slew to any object, nothing happens.

2021-11-11T23:27:57: [INFO] Initialization Complete
2021-11-11T23:27:57: [INFO] Mount is unparked.
2021-11-11T23:27:57: [INFO] Rotator found.
2021-11-11T23:27:57: [INFO] Focuser 2 found
2021-11-11T23:27:57: [INFO] Focuser 1 found
2021-11-11T23:27:57: [INFO] =============== Parkdata loaded
2021-11-11T23:27:57: [INFO] Mount is unparked.
2021-11-11T23:27:57: [INFO] OnStep/OnStepX version could not be detected
2021-11-11T23:28:42: [INFO] Focuser 2 called, but returned error -4 on read, disabling further polling
2021-11-11T23:27:57: [INFO] Device configuration applied.
2021-11-11T23:27:57: [INFO] Pulse guiding is enabled.
2021-11-11T23:27:57: [INFO] Setting Max Slew Rate to 5 (8x)
2021-11-11T23:27:57: [ERROR] Error setting site latitude coordinates
2021-11-11T23:27:57: [WARNING] Dome Policy set to: Dome locks. This prevents the mount from unparking when dome is parked.
2021-11-11T23:27:57: [INFO] Loading device configuration...
2021-11-11T23:27:57: [INFO] Initialization Complete
2021-11-11T23:27:57: [INFO] Mount is unparked.
2021-11-11T23:27:56: [INFO] No Rotator found.
2021-11-11T23:27:56: [ERROR] Unable to parse response.
2021-11-11T23:27:56: [INFO] No Focusers found
2021-11-11T23:27:56: [INFO] Function call failed, stopping Focuser probe, return: -4
2021-11-11T23:27:56: [INFO] Focuser 2 NOT found (Checking for OnStepX Focusers)
2021-11-11T23:27:56: [INFO] Focuser 1 NOT found
2021-11-11T23:27:56: [INFO] =============== Parkdata loaded
2021-11-11T23:27:56: [INFO] Mount is unparked.
2021-11-11T23:27:56: [INFO] V4 OnStep detected, setting some defaults
2021-11-11T23:27:56: [INFO] Mount has Latitude 43:nn:0.0 (43.nn) Longitude -80:nn:0.0 (-80.nn) (Longitude sign in carthography format)
2021-11-11T23:27:56: [INFO] LX200 OnStep is online.
2021-11-11T23:27:55: [INFO] Connecting to 192.168.0.21@9998 ...
2021-11-11T23:27:55: [INFO] Debug is enabled.
2 years 5 months ago #77497

Please Log in or Create an account to join the conversation.

  • Posts: 452
  • Thank you received: 71
Really strange,

I have here:
alain@asus:~/.indi/logs/2021-11-12$ indiserver -v
2021-11-12T06:41:33: startup: indiserver -v
Usage: indiserver [options] driver [driver ...]
Purpose: server for local and remote INDI drivers
INDI Library: 1.9.3 Code v1.9.3.
Protocol 1.7.
 
kstars -v
kstars 3.5.6 Stable


OnStepX 10.04e

and logs  show
INFO 6.627992 sec : Session log file /home/alain/.indi/logs/2021-11-12/indi_lx200_OnStep/indi_lx200_OnStep_06:36:38.log WARNING 16.636089 sec : Port /dev/serial/by-id/usb-Teensyduino_USB_Serial_2313360-if00 is already used by another driver or process. INFO 25.918974 sec :
LX200 OnStep is online. INFO 25.966981 sec :
Mount has Latitude 48:13:0.0 (48.2167) Longitude 07:38:0.0 (7.63333) (Longitude sign in carthography format) INFO 26.016995 sec :
OnStepX detected, setting some defaults INFO 26.017294 sec :
Mount is unparked. INFO 26.017337 sec : =============== Parkdata loaded INFO 26.024928 sec :
Focuser 1 found INFO 26.031828 sec :
Focuser 2 NOT found (Checking for OnStepX Focusers) INFO 26.100837 sec :
No Rotator found. INFO 26.209618 sec :
Mount is unparked. INFO 26.210530 sec :
Initialization Complete INFO 26.241883 sec :
Time updated, updating planetary data... INFO 26.267878 sec :
Site location updated to Lat 48:13:29.00 - Long 7:38:51.00 INFO 26.268895 sec :
Observer location updated: Latitude 48:13:29.0 (48.22) Longitude 7:38:51.0 (7.65) INFO 26.941040 sec :
Telescope detected having Pier Side, adding that capability (many messages duplicated) INFO 26.981138 sec :
Mount has Latitude 48:13:29.0 (48.2247) Longitude 07:38:51.0 (7.6475) (Longitude sign in carthography format) INFO 27.032820 sec :
OnStepX detected, setting some defaults INFO 27.033092 sec :
Mount is parked. INFO 27.033141 sec :
=============== Parkdata loaded INFO 27.040778 sec : Focuser 1 found INFO 27.047769 sec :
Focuser 2 NOT found (Checking for OnStepX Focusers) INFO 27.117810 sec :
No Rotator found. INFO 27.227151 sec : Mount is parked. INFO 27.230235 sec :
Initialization Complete INFO 82.529712 sec :
Mount is unparked. INFO 98.230992 sec :
Slewing to RA: 20:42:09 - DEC: 45:21:44 INFO 158.610894 sec :
OnStep: Synchronization successful. INFO 212.033850 sec :
Mount is parked.


I will have to try OnStep 4 to see
Last edit: 2 years 5 months ago by Alain Zwingelstein.
2 years 5 months ago #77499

Please Log in or Create an account to join the conversation.

If there is a critical bug in the driver, please let me if it is confirmed and if there is a fix for it, we can rebuild the 1.9.3 to include this fix.
2 years 5 months ago #77500

Please Log in or Create an account to join the conversation.

  • Posts: 452
  • Thank you received: 71
Khalid,

I just tested with OnStep 4 and found it working fine.
But for what concerns the Focuser, you are right, focuser pane is present even if no focuser present.

I am using latest Indi and Kstars from Git but should not be much different from ppa's (I use Debian bullseye)
Last edit: 2 years 5 months ago by Alain Zwingelstein. Reason: spelling
2 years 5 months ago #77502

Please Log in or Create an account to join the conversation.

  • Posts: 322
  • Thank you received: 31
Today I tested over USB and it works normally.
Only the focuser messages are there, but they are harmless (at least for now).

Yesterday's test was over WiFi (IP address of Wemos and port 9998). This is using the SWS 2.01d (main branch) which has changed certain things that allow for the SHC to work over WiFi.

So maybe there is a problem over WiFi only? Or it can be my network?

If someone can test the above SWS version and OnStep over WiFi, please do.
2 years 5 months ago #77505

Please Log in or Create an account to join the conversation.

  • Posts: 161
  • Thank you received: 39
Looking at Khalid's logs, I thought problem with a choice I made. Something I didn't do with the version code is prevent checking for extra focusers, in favor of detection with fast timeouts. If we do gate that, should it be with version == OnStepX or OnStepX & Unknown/Undetected? (Noting that doing the gating would probably break whatever compatability is left with TeenAstro, which I don't test against.)  

However, That almost looks like a loss of communication in there on initialization? (It calls for a single char response, which times out (TTY_TIME_OUT = -4) and then fails to see the version (where it could before)

This admittedly isn't that well handled at that point, but that seems like an edge case: It connects then while initializing the connection drops? Aside from making sure everything is very careful, (eliminating some things which make the code a lot more readable, like sendOnStepCommand (which returns a bool, so doesn't give indication of errors, which is what most of the focuser/rotator detection is called with, Actually... I take that back it tries to, but returns error_type (I'd assume -4, timeout again) to a boolean, which would always return true. D'oh.) So we should probably go for singleCharResponse and check for <0, and not use/replace all occurrences of sendOnStepCommand. Still a rather limited case. But I'm 99% certain now it's a loss of communication.

(I've worked some on the checksummed commands, but that's more complicated than it should be and probably will end up with OnStep further drifting from the base lx200 (or modifying it and making it nasty for everyone else). Branch here if curious: github.com/james-lan/indi/tree/onstep-2021-checksum-commands )

---
Unfortunately, I was a little confused by Alain's comment about focusers showing up in the panel, if it was in reference to his own (10.04e) log (showing 1 focuser detected, which should bring it up) or Khalid's showing 0 then 2, after what I think is the communication error (which would also on the 2nd detection, should also be brought up.) Is it detecting a focuser that's not there in that log? They shouldn't be showing up for boards without focusers based on someone else's change as I recall? ( And while typing this and looking the code had an aha moment: Though I'm not seeing it, so maybe I clobbered it by accident?)

Actually, I think I did, FI::updateProperties is up top of updateProperties, vs conditional like RI (rotator) is, when it really shouldn't be. (Not a huge deal, it just shows, and that's a regression, but not a huge one.) I or someone else can push that into the appropriate places. (I'll be a bit.)

Jasem: I don't think either of these really warrant a 0.93.1, unless that's already being prepared? Anyone (esp Alain, Khalid) disagree? If anyone does, I'll try extra to make sure a fix/merge request is done/tested tonight, unless someone else is faster. (That'd be ~12-16ish hours from now.)

 
2 years 5 months ago #77507

Please Log in or Create an account to join the conversation.

  • Posts: 322
  • Thank you received: 31
I am including the log from when INDI was connected over WiFi.

From what I can see, there are a lot of timeouts, not only from the focuser (:Fxx), but also thermometers (:rX commands).
Maybe others too, I did not inspect everything.
The time stamps show the lag.

That explains what I am seeing.

I think the additional devices should NOT be enabled by default.
Maybe a better scheme may be to list all the possible devices somewhere on the INDI panel and ask the user to enable what they have.

The traffic between INDI and OnStep is way too chatty already.

I also see odd things like at some point saying my latitude is 60 (it is not, it is ~ 43).

If someone else can test over WiFi, that will confirm (or not) what I am seeing.
 
2 years 5 months ago #77508
Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 174
  • Thank you received: 27
I installed the latest version from PPA and tested it with my 4.23 Onstep.
The issue I was facing in the past with the driver crashing upon connect is now resolved.
I have two mounts currently running - CGE and G11, collecting the data.
I used my regular flow - no alignment, just slew to the target, sync after plate solving, until the target is within 60" then autofocus.
So far so good.
I have not tried Outputs yet and also did not have to do a meridian flip.
Looks like outputs now read the configuration from the mount and display the appropriate feature names.
2 years 5 months ago #77510

Please Log in or Create an account to join the conversation.

  • Posts: 174
  • Thank you received: 27
One more thing - I am using CCDCiel in case if it makes any difference.
2 years 5 months ago #77511

Please Log in or Create an account to join the conversation.

  • Posts: 452
  • Thank you received: 71
@Khalid,

I agree with you, non used features should be skipped and not shown in the control panel.
This is the first difficult part since the driver itself needs declaration of expected capabilities right before anything like communication with the device can start.
this are the first actions taken at driver initialization
LX200_OnStep::LX200_OnStep() : LX200Generic(), WI(this), RotatorInterface(this)
{
    currentCatalog    = LX200_STAR_C;
    currentSubCatalog = 0;
 
    setVersion(1, 12);   // don't forget to update libindi/drivers.xml
 
    setLX200Capability(LX200_HAS_TRACKING_FREQ | LX200_HAS_SITES | LX200_HAS_ALIGNMENT_TYPE | LX200_HAS_PULSE_GUIDING |
                       LX200_HAS_PRECISE_TRACKING_FREQ);
 
    SetTelescopeCapability(GetTelescopeCapability() | TELESCOPE_CAN_CONTROL_TRACK                         |
                           TELESCOPE_HAS_TRACK_RATE, 10 );
 
    FI::SetCapability(FOCUSER_CAN_ABS_MOVE | FOCUSER_CAN_REL_MOVE | FOCUSER_CAN_ABORT);
 
    RI::SetCapability(ROTATOR_CAN_ABORT | ROTATOR_CAN_HOME | ROTATOR_HAS_BACKLASH);
    }
 

Next the driver stes all the properties (and we still do not know all the features of the hardware)
bool LX200_OnStep::initProperties()
{
 
    LX200Generic::initProperties();
    FI::initProperties(FOCUS_TAB);
    WI::initProperties(ENVIRONMENT_TAB, ENVIRONMENT_TAB);
    RI::initProperties(ROTATOR_TAB);
    SetParkDataType(PARK_RA_DEC);
 
...
... and so on with all the properties
...
}

it is only after that that we start communicate with the hardware and really update all the properties.
It is in here where we can enable / disable features and it should be one of our effort to work on this
bool LX200_OnStep::updateProperties()
{
    //     int i;
    //    char cmd[32];
    LX200Generic::updateProperties();
    FI::updateProperties();
    WI::updateProperties();
 
    if (isConnected())
...
...
...
}

On the other hand there is the way the driver communicates with the hardware (which is where yo see some timeouts)
All event driven part is ok so far it is pretty encapsulated in dedicated functions and therefore easy to control.
The polling side is the "nightmare" since everything is polled regardless if implemented or not.
It is called every (polling period defined as an "option" in the control panel)
Even is this is not the cause of the timeouts it is annoying.
On way to got (and you pointed already out) is to split the polling into dedicated function which is partially the case but sot straightforward now.

And over all this "ToDos" we also have the different "flavors" (OnStep 4.xx, Older OnStep, OnStepX ) to cope with.

Additionally I believe each of us just focuses on the hardware he has at disposition (starting by myself) so things like:
- Outputs,
- Weather,
- Temperature Sensors
- Limit switches
... cannot be really tested until somebody has the needed hardware.

And last but not least, like James said , we are distracted by other things (It is "Mea culpa, mea maxima culpa" why the "skip focuser" did not end-up in the latest release.

When you speak about Indi beeing "Chatty", I understand this as too much communication.
I believe Ascom, Androïd and the Web Browser over WiFi / Ethernet are also very "chatty".
So far I never experienced timeouts due to too much communication, but more because of the way they are handled, Expected Response, One char, # ended or not ....

I know this does not bring anything to the solution, I just wanted to share my thoughts on where we should concentrate and eventually correct me is I am wrong.

And a last point, on my side, is sometimes I understand the contrary of what is meant in the text due to my poor English. (As a crazy French guy said during a meeting on one of my jobs in Buffalo, "but nobody speaks French here"   
 
2 years 5 months ago #77516

Please Log in or Create an account to join the conversation.

Time to create page: 1.034 seconds