×

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

Bi-monthly release with minor bug fixes and improvements

IOptron Driver NOT WORKING with 8401 Hand Controller

I see it timing out for :SE# command. Can you try connecting to it using Cutecom :
sudo apt-get install cutecom

Put speed at 9600, port to whatever port you were using (e.g. /dev/ttyUSB0), and connect to it. Select "No Line End" from the combobox at the bottom and enter :SE# and see if you get any response. If not, try :SE?# and see if you get any response back.

Also try :V# and check the response for that.
6 years 9 months ago #17419

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

  • Posts: 322
  • Thank you received: 31
Thanks a lot.

The response for :V# is
V1.00#

The response for :SE?# is
 

There is no response from :SE# at all.
6 years 9 months ago #17421

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

  • Posts: 322
  • Thank you received: 31
Jasem,

I found something.

Here is the manual for the hand controller

www.ioptron.us/Manual/8401_HC_Manual.pdf

Page 41 has the command set and :SE#is not among them, though :SE?# is there.

Should I try the lx200generic driver instead? A page or so before the command set they imply that it would work.
6 years 9 months ago #17431

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

  • Posts: 322
  • Thank you received: 31
I went ahead and tested LX200 Basic (there is no Generic any more). This is indoors, not under the stars.

The slews work to objects, even if they are more than three slews. So that part is not an issue.

However, sometimes, the mount will not beep after a slew, and hence will not be tracking (RA keeps incrementing, star drifts from cross hairs). Other times, it does track and stay on the target.

Also, there is no Goto park command to return the mount to its initial position.

I can enable logging and attach the logs, but before going down that route want to hear from Jasem if this is worth pursuing further, or it is a dead end from the start.
6 years 9 months ago #17432

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

I updated the driver to use :SE?# if it encounters an error. Please test tomorrow from PPA. If you can compile from GIT, you can do it today.

EDIT: Another difference I noted from the command set is that it supports parking to different positions while the regular driver use set RA/DE to do the parking. So please test parking as well with the ZEQ25 driver. If all works OK, I'll add alias for GotoNova.
Last edit: 6 years 9 months ago by Jasem Mutlaq.
6 years 9 months ago #17438

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

  • Posts: 322
  • Thank you received: 31
That is awesome Jasem.

I will sure test it when the packages date stamped 20170627 show up!

Many thanks and Happy Eid to you and your loved ones.
6 years 9 months ago #17446

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

  • Posts: 322
  • Thank you received: 31
Jasem,

I saw your commit here for the change, substituting :SE# with :SE?# if the former times out.

Is the change you made in the package version r3142:
libindi1:amd64 1.4.1+r3142~201706261913~ubuntu16.04.1

I saw this version available here and built an hour ago.

Or will it be in a future package time stamped: 2017-06-27 19:20 UTC?
6 years 9 months ago #17448

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

  • Posts: 155
  • Thank you received: 10
Hello,

I suspect additional timing changes will be required for the 8401 to properly respond to the INDI driver. Please see attached timeout messages when changing the slewing rate.

Dan
6 years 9 months ago #17455
Attachments:

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

  • Posts: 322
  • Thank you received: 31
I compiled INDI from source, and verified that the change is in the version I cloned.

But the problem is the same, namely, only :SE# commands are sent, no :SE?#. First slew is successful, second slew is short.

I would make that change if I understood the code flow.

But looking at it with my limited knowledge, I think it would be better to put the change at init time, not every time when a slew is issued. Specifically query the slew status when the telescope has initialized, then check if that fails or succeeds, and then store the appropriate command for subsequent use, without failing each time a check slew is issued. No?

Attached is the log showing normal SE's send and timing out.
6 years 9 months ago #17456
Attachments:

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

  • Posts: 155
  • Thank you received: 10
I fully agree, we must relax the timing or allow for the driver to ignore it.
6 years 9 months ago #17461

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

I wrote a new driver for Gotonova since the differences were too great to modify existing ZEQ25. You will see "Gotonova" driver in tomorrow's PPA update. Please test that one.
The following user(s) said Thank You: Khalid
6 years 9 months ago #17462

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

  • Posts: 322
  • Thank you received: 31
You are awesome!

Late yesterday, I started to understand how the code was structured, and was thinking of the exact same thing, but you beat me to it.

I compiled from source, using a git clone. Good news and bad news.

Good news is that the park command now works, and returns the scope to the NCP position. So that is an improvement.

However, the same timeout problem persists. Second slew is short and :SE?# are followed by a timeout.

So I went to cutecom, and tested the same sequence of commands: set RA/DEC, issue :MS#, followed by :SE?# to check the status. The strange thing is that it works fine in cutecome. Returns 1 when the mount is slewing, and returns 0 once the mount has beeped and slew is done.

I don't know how INDI's code is different from cutecom. I thought that it is timing, and added
usleep(2000000);

At the top of the isSlewComplete() function. But that made no difference.

Then I found the bug, we were copying a short number of characters. Once I fixed this, the scope works fine. It slews and slews to object after object without issues.

Here is the patch:
diff --git a/libindi/drivers/telescope/lx200gotonova.cpp b/libindi/drivers/telescope/lx200gotonova.cpp
index dc0aefa..657309e 100644
--- a/libindi/drivers/telescope/lx200gotonova.cpp
+++ b/libindi/drivers/telescope/lx200gotonova.cpp
@@ -201,11 +201,11 @@ bool LX200GotoNova::isSlewComplete()
     int nbytes_read    = 0;
     int nbytes_written = 0;
 
-    strncpy(cmd, ":SE?#", 16);
+    strncpy(cmd, ":SE?#", 6);
 
     DEBUGF(INDI::Logger::DBG_DEBUG, "CMD (%s)", cmd);
 
-    if ((errcode = tty_write(PortFD, cmd, 4, &nbytes_written)) != TTY_OK)
+    if ((errcode = tty_write(PortFD, cmd, 6, &nbytes_written)) != TTY_OK)
     {   
         tty_error_msg(errcode, errmsg, MAXRBUF);
         DEBUGF(INDI::Logger::DBG_ERROR, "%s", errmsg);

One final though on the naming. The GotoNova name is used for the hand controller, as well as the upgrade kit. The 8401 is the hand controller, and it can in theory be used for other Alt Az mounts, and 8400 is the upgrade kit's part number (the very first thing that iOptron made). So you should name the alias as "GotoNova 8400 Kit", or "GotoNova Kit" to avoid cases where people would use this driver for non-equatorial mounts and complaining.

Also, for the other thread that is now closed to comments, if you can edit your comment there, and add that the ultimate solution is the new driver called "Gotonova something", so that people don't try the ZEQ25 driver and getting stuck. This way, anyone coming from Google (like I did) will get fresh and accurate info.

And, where do I send the million dollar cheque? ;-)
Last edit: 6 years 9 months ago by Khalid.
6 years 9 months ago #17476

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

Time to create page: 2.395 seconds