×

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

Bi-monthly release with minor bug fixes and improvements

ASIAIR and opensource software licences

  • Posts: 167
  • Thank you received: 54
Hi

I'm not sure how to approach this subject, but I would love to have a discussion with you about ZWO's use of Indi and other opensource software.

I asked a question on their forum, but I think we'll have a freer point of view here.

Here is what I asked them:
"
The pro version uses opensource software: is this the case on "Plus" version?
If so, by what means do you intend to fulfill the obligations of opensource licenses?
At least the publication of modified code for the LGPL2.1 associated with indi, wich pro version obviously uses for mount control.

"
bbs.astronomy-imaging-camera.com/d/13240...ce-software-licences

There would also be PHD2 / astrometry.net and possibly Stellarsolver, as well as other components further out of astrophotography.
The least thing would be to mention the use of opensource software somewhere, but we can't find any mention of that.
(and to publish modified code at least for indi)
What do you think ?
The following user(s) said Thank You: Dennis Stav
2 years 7 months ago #75590

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

  • Posts: 334
  • Thank you received: 23
ASIAIR Pro Plus I think the will use Rock Pi 4C that is another hardware SBC of the Raspberry that include also the option to install eMMC and M2.sata devices. For the software I think that they uses indi to manage all devices but the made a dedicated GUI for the APP, but underlayer sistem should be RaspberryOS or similar with INDI
2 years 6 months ago #75591

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

  • Posts: 167
  • Thank you received: 54
Hardware is another question, indeed
(btw : Asiair contains RPi CM with additional board and original OS is Raspbian)

 
2 years 6 months ago #75607

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

  • Posts: 167
  • Thank you received: 54
Jasem, I would really like to know what you think about this subject
Thanks
Gilles.
2 years 6 months ago #75686

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

I can't comment on other open source projects, but as far as INDI is concerned, any changes to INDI LGPLed code that is distributed should be made available.
The following user(s) said Thank You: Dennis Stav
2 years 6 months ago #75693

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

  • Posts: 167
  • Thank you received: 54
Thank you Jasem

This is not enough : with LGPL, even if code isn't changed you must mention copyright and licence !
And anyway ASIAIR is using  modified code of indi ...
(small/tiny little proof in attachment)

Gilles.


 
2 years 6 months ago #75695
Attachments:

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

  • Posts: 350
  • Thank you received: 107
Do they have some about page in ASIAIR? Companies usually put open source mentions there.

Are you user of ASIAIR? Then ask them politely if you can get changes to INDI lib that they made.
2 years 6 months ago #75744

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

  • Posts: 167
  • Thank you received: 54
I couldn't find any about page, nor anything like that ...
Neither I'm an ASIAIR  user, but that doesn't absolve ZWO to mention used licenses, and to publish modified code.
(and I consider that my question was politely asked on their forum  )
 
Last edit: 2 years 6 months ago by gehelem.
2 years 6 months ago #75752

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

  • Posts: 22
  • Thank you received: 30
I've been hassling ZWO about this for a while now, had posts removed and am currently on a 30 day timeout from one of their Facebook groups for bringing it up again. I've done forensic teardowns of the ASIair Pro, as well as ripped apart the update packages. I've emailed ZWO, I've DM'd the owner on Facebook, nothing. Silence.

Here's what I've found. The ASIAir 1.4.0 image you can download from their website is packing indilserver 1.8.2. Doing an update from the ASIAir 2.0 app, using the current 10.46 build, does some fun stuff. They're using APT for package management, and the update grabs a bunch of updates from a Chinese raspberrypi.org mirror, except for five packages, which I believe are transferred to the ASIair directly from the tablet application:
Get:16 /tmp/zwo/update/deb/asiair_armhf.deb asiair armhf 1.0.0-1046 [9,138 kB]
Get:17 /tmp/zwo/update/deb/indi_stargo-y_armhf.deb indi-stargo armhf 1.5-2 [138 kB]
Get:18 /tmp/zwo/update/deb/indi_starbook-y_armhf.deb indi-starbook armhf 0.8-1 [681 kB]
Get:19 /tmp/zwo/update/deb/indi_eqmod-y_armhf.deb indi-eqmod armhf 0.7-6 [448 kB]
Get:20 /tmp/zwo/update/deb/indi-y_armhf.deb libindi1-y armhf 1.7.8-22 [8,974 kB]

The first, the asiair_armhf_deb package, is the core runtime apps that drive the guider, imager, and updater, as well as the shell scripts for managing the wifi and other essentials. The -1046 minor version tag matches the 10.46 version of the tablet app.

If you're using the INDI kit, he other four will look pretty familiar, except for the -y suffix.

Pulling the update packages off to another host because the asiair is usually running a read-only file system and the tools I need for this aren't installed there:
billn@Hadriel:~/asiair-dpkg$ scp pi@10.0.1.32:/tmp/zwo/update/deb/*-y*.deb .
indi_eqmod-y_armhf.deb                                                                                                       100%  438KB  34.9MB/s   00:00
indi_starbook-y_armhf.deb                                                                                                    100%  665KB  38.1MB/s   00:00
indi_stargo-y_armhf.deb                                                                                                      100%  135KB  32.5MB/s   00:00
indi-y_armhf.deb                                                                                                             100% 8764KB  38.6MB/s   00:00
billn@Hadriel:~/asiair-dpkg$ scp pi@10.0.1.32:/tmp/zwo/update/deb/asiair*.deb .
asiair_armhf.deb                                                                                                             100% 8924KB  35.3MB/s   00:00
billn@Hadriel:~/asiair-dpkg$ for i in `ls`
> do
> mkdir $i.d
> cd $i.d; ar -x ../$i; cd ..; done
billn@Hadriel:~/asiair-dpkg$ ls
asiair_armhf.deb    indi-y_armhf.deb    indi_eqmod-y_armhf.deb    indi_starbook-y_armhf.deb    indi_stargo-y_armhf.deb
asiair_armhf.deb.d  indi-y_armhf.deb.d  indi_eqmod-y_armhf.deb.d  indi_starbook-y_armhf.deb.d  indi_stargo-y_armhf.deb.d

So that's all five packages unpacked. Cracking open indi-y:
billn@Hadriel:~/asiair-dpkg$ cd indi-y_armhf.deb.d/
billn@Hadriel:~/asiair-dpkg/indi-y_armhf.deb.d$ ls
control.tar.xz  data.tar.xz  debian-binary
billn@Hadriel:~/asiair-dpkg/indi-y_armhf.deb.d$ tar xvf control.tar.xz
./
./control
billn@Hadriel:~/asiair-dpkg/indi-y_armhf.deb.d$ tar xvf data.tar.xz
./
./lib/
./lib/udev/
./lib/udev/rules.d/
./lib/udev/rules.d/80-dbk21-camera.rules
./lib/udev/rules.d/99-focusers.rules
./lib/udev/rules.d/99-indi_auxiliary.rules
./lib/udev/rules.d/99-vantage.rules
./usr/
./usr/bin/
./usr/bin/indi_aaf2_focus
./usr/bin/indi_arduinost4
./usr/bin/indi_astromech_lpm
./usr/bin/indi_astrometry
./usr/bin/indi_baader_dome
./usr/bin/indi_celestron_gps
./usr/bin/indi_celestron_sct_focus
./usr/bin/indi_deepskydad_af1_focus
./usr/bin/indi_deepskydad_af2_focus
./usr/bin/indi_dmfc_focus
./usr/bin/indi_dsc_telescope
./usr/bin/indi_eval
./usr/bin/indi_fcusb_focus
./usr/bin/indi_flipflat
./usr/bin/indi_gemini_focus
./usr/bin/indi_getprop
./usr/bin/indi_gpusb
./usr/bin/indi_hid_test
./usr/bin/indi_hitecastrodc_focus
./usr/bin/indi_ieq_telescope
./usr/bin/indi_imager_agent
./usr/bin/indi_integra_focus
./usr/bin/indi_ioptronv3_telescope
./usr/bin/indi_joystick
./usr/bin/indi_lacerta_mfoc_focus
./usr/bin/indi_lakeside_focus
./usr/bin/indi_lx200basic
./usr/bin/indi_lx200generic
./usr/bin/indi_lynx_focus
./usr/bin/indi_manual_wheel
./usr/bin/indi_mbox_weather
./usr/bin/indi_meta_weather
./usr/bin/indi_microtouch_focus
./usr/bin/indi_moonlite_focus
./usr/bin/indi_moonlitedro_focus
./usr/bin/indi_nfocus
./usr/bin/indi_nightcrawler_focus
./usr/bin/indi_nstep_focus
./usr/bin/indi_onfocus_focus
./usr/bin/indi_openweathermap_weather
./usr/bin/indi_optec_wheel
./usr/bin/indi_paramount_telescope
./usr/bin/indi_pegasus_ppb
./usr/bin/indi_pegasus_upb
./usr/bin/indi_perfectstar_focus
./usr/bin/indi_pmc8_telescope
./usr/bin/indi_pyxis_rotator
./usr/bin/indi_qhycfw2_wheel
./usr/bin/indi_qhycfw3_wheel
./usr/bin/indi_quantum_wheel
./usr/bin/indi_robo_focus
./usr/bin/indi_rolloff_dome
./usr/bin/indi_scopedome_dome
./usr/bin/indi_script_dome
./usr/bin/indi_script_telescope
./usr/bin/indi_sestosenso_focus
./usr/bin/indi_setprop
./usr/bin/indi_siefs_focus
./usr/bin/indi_simulator_ccd
./usr/bin/indi_simulator_detector
./usr/bin/indi_simulator_dome
./usr/bin/indi_simulator_focus
./usr/bin/indi_simulator_gps
./usr/bin/indi_simulator_guide
./usr/bin/indi_simulator_sqm
./usr/bin/indi_simulator_telescope
./usr/bin/indi_simulator_weather
./usr/bin/indi_simulator_wheel
./usr/bin/indi_skycommander_telescope
./usr/bin/indi_skysafari
./usr/bin/indi_skywatcherAltAzMount
./usr/bin/indi_skywatcherAltAzSimple
./usr/bin/indi_smartfocus_focus
./usr/bin/indi_snapcap
./usr/bin/indi_sqm_weather
./usr/bin/indi_star2000
./usr/bin/indi_steeldrive_focus
./usr/bin/indi_synscan_telescope
./usr/bin/indi_synscanlegacy_telescope
./usr/bin/indi_tcfs_focus
./usr/bin/indi_temma_telescope
./usr/bin/indi_trutech_wheel
./usr/bin/indi_usbdewpoint
./usr/bin/indi_usbfocusv3_focus
./usr/bin/indi_v4l2_ccd
./usr/bin/indi_vantage_weather
./usr/bin/indi_watchdog
./usr/bin/indi_watcher_weather
./usr/bin/indi_weather_safety_proxy
./usr/bin/indi_wunderground_weather
./usr/bin/indi_xagyl_wheel
./usr/bin/indiserver
./usr/lib/
./usr/lib/arm-linux-gnueabihf/
./usr/lib/arm-linux-gnueabihf/indi/
./usr/lib/arm-linux-gnueabihf/indi/MathPlugins/
./usr/lib/arm-linux-gnueabihf/indi/MathPlugins/libindi_SVD_MathPlugin.so
./usr/lib/arm-linux-gnueabihf/libindiAlignmentDriver.so.1.7.8
./usr/lib/arm-linux-gnueabihf/libindidriver.so.1.7.8
./usr/lib/arm-linux-gnueabihf/libindilx200.so.1.7.8
./usr/lib/arm-linux-gnueabihf/pkgconfig/
./usr/lib/arm-linux-gnueabihf/pkgconfig/libindi.pc
./usr/share/
./usr/share/indi/
./usr/share/indi/drivers.xml
./usr/share/indi/indi_tcfs_sk.xml
./usr/bin/indi_eq500x_telescope
./usr/bin/indi_ioptronHC8406
./usr/bin/indi_lx200_10micron
./usr/bin/indi_lx200_16
./usr/bin/indi_lx200_OnStep
./usr/bin/indi_lx200ap
./usr/bin/indi_lx200ap_experimental
./usr/bin/indi_lx200ap_gtocp2
./usr/bin/indi_lx200autostar
./usr/bin/indi_lx200classic
./usr/bin/indi_lx200fs2
./usr/bin/indi_lx200gemini
./usr/bin/indi_lx200gotonova
./usr/bin/indi_lx200gps
./usr/bin/indi_lx200pulsar2
./usr/bin/indi_lx200ss2000pc
./usr/bin/indi_lx200zeq25
./usr/bin/indi_skyhunter_telescope
./usr/bin/indi_tcfs3_focus
./usr/lib/arm-linux-gnueabihf/libindiAlignmentDriver.so
./usr/lib/arm-linux-gnueabihf/libindiAlignmentDriver.so.1
./usr/lib/arm-linux-gnueabihf/libindidriver.so
./usr/lib/arm-linux-gnueabihf/libindidriver.so.1
./usr/lib/arm-linux-gnueabihf/libindilx200.so
./usr/lib/arm-linux-gnueabihf/libindilx200.so.1

I can't readily find a libindi1-1.7.8 debian package to compare this to, but at the most basic, we have this:
billn@Hadriel:~/asiair-dpkg/indi-y_armhf.deb.d$ cat control
Package: libindi1-y
Priority: extra
Section: checkinstall
Installed-Size: 17268
Maintainer: root@raspberrypi
Architecture: armhf
Version: 1.7.8-22
Provides: libindi
Description: Instrument-Neutral Device Interface library -- shared library
Replaces: libindi-plugins, libindi0, libindialignmentdriver1, libindidriver1, indi-bin, libindi-data, libindi1
Conflicts: libindi-plugins, libindi0, libindialignmentdriver1, libindidriver1, indi-bin, libindi-data, libindi1
Depends: libc6,libgsl23,libgslcblas0,libstdc++6,libgcc1,libusb-1.0-0,libnova-0.16-0,libcfitsio7,zlib1g,libjpeg62-turbo,libudev1,libcurl3-gnutls,libbz2-1.0,libnghttp2-14,libidn2-0,librtmp1,libssh2-1,libpsl5,libnettle6,libgnutls30,libgssapi-krb5-2,libkrb5-3,libk5crypto3,libcom-err2,libldap-2.4-2,libunistring2,libhogweed4,libgmp10,libgcrypt20,libp11-kit0,libtasn1-6,libkrb5support0,libkeyutils1,libsasl2-2,libgpg-error0,libffi6,libcurl4,libssl1.1

22 revisions on 1.7.8, if I'm reading that correctly. I've done this teardown before, but I can't find my dumps of it to compare against an older version. I'll keep digging around, I'm sure it's here somewhere. If someone has an ASIair that hasn't been powered on in a while and wants to dropbox me an image of the SD card, I can tear that open for the last update and compare.

The last time I was digging around in here, I was trying to sideload drivers for my Sesto Senso 2 and Esatto EAFs, figuring it's an indiserver, I expect a certain level of interoperability, maybe I can trick it into using my focusers, or at least use a separate app to control them and get the functionality I want without buying a ZWO EAF when I already have two excellent ones. However, this didn't work, and I couldn't figure out why until I started stack tracing the indiserver and drivers to sort it out. Restarting the indiserver with my specifically requested drivers loaded, calls to the focuser weren't going to the USB serial device for either focuser, but were instead forcibly redirected to the tcp port of the zwo_imager application.
root@asiair:/home/pi# netstat -plan | grep LIST
tcp        0      0 0.0.0.0:4700            0.0.0.0:*               LISTEN      732/zwoair_imager
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      1069/smbd
tcp        0      0 0.0.0.0:4030            0.0.0.0:*               LISTEN      718/zwoair_guider
tcp        0      0 0.0.0.0:4350            0.0.0.0:*               LISTEN      568/zwoair_updater
tcp        0      0 0.0.0.0:4800            0.0.0.0:*               LISTEN      732/zwoair_imager
tcp        0      0 0.0.0.0:4801            0.0.0.0:*               LISTEN      732/zwoair_imager
tcp        0      0 0.0.0.0:4040            0.0.0.0:*               LISTEN      718/zwoair_guider
tcp        0      0 0.0.0.0:4360            0.0.0.0:*               LISTEN      568/zwoair_updater
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      1069/smbd
tcp        0      0 0.0.0.0:4400            0.0.0.0:*               LISTEN      718/zwoair_guider
tcp        0      0 0.0.0.0:4500            0.0.0.0:*               LISTEN      718/zwoair_guider
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      384/sshd
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      653/pigpiod

I haven't done too deep a dive into what's going on for each of the different listening socks for each app but both the guider and imager apps have some familiar bits inside of them:
billn@Hadriel:~/asiair-dpkg/asiair_armhf.deb.d/home/pi/ASIAIR/bin$ strings zwoair_imager | grep -i phd
PHD_fits_close_file
PHD_fits_open_diskfile
PHD_fits_create_file
PHD2_GuideLog
billn@Hadriel:~/asiair-dpkg/asiair_armhf.deb.d/home/pi/ASIAIR/bin$ strings zwoair_guider | grep -i phd
PHDGuidingV2
Your %s is preventing PHD from making adequate corrections to keep the guide star locked. Increase the %s to allow PHD2 to make the needed corrections.
Even using the maximum moves, PHD2 can't properly correct for the large guide star movements in %s. Guiding will be impaired until you can eliminate the source of these problems.
Calibration step = phdlab_placeholder, Max RA duration = %d, Max DEC duration = %d, DEC guide mode = %s
PHD2_GuideLog
PHD2 version, Log version
*ZL28MakeGaussianProcessGuideAlgoP5Mount9GuideAxisE15PHD2DebugLogger
PhdController failed: %s
PhdController: newstate STATE_FINISH
PhdController: setup
PhdController: newstate STATE_ATTEMPT_START
PhdController: not ready: %s
PhdController: guider state = %d
PhdController: newstate STATE_SETTLE_BEGIN
PhdController: newstate STATE_CALIBRATION_WAIT
PhdController: start capturing
PhdController: newstate STATE_SELECT_STAR
PhdController: newstate STATE_CALIBRATE
PhdController: newstate STATE_WAIT_SELECTED
PhdController: clearing calibration
PhdController: start calibration
PhdController: newstate STATE_GUIDE
PhdController: setting Dec guide mode to %s for dither settle
PhdController: newstate STATE_SETTLE_WAIT
PhdController: settling, locked = %d, distance = %.2f (%.2f) aobump = %d frame = %d / %d
PhdController: restore Dec guide mode to %s after dither
PhdController complete: success
PhdController complete: fail: %s
PhdController: newstate STATE_IDLE
PhdController::Guide reentrancy state = %d op = %d
PhdController::Guide begins
PhdController: newstate STATE_SETUP
PhdController::Dither reentrancy state = %d op = %d
PhdController::Dither begins
PhdController: forcing dither RA-only since Dec guide mode is %s
PhdController::Dither pMyDev->Dither failed
manual or phd1-style dither
PHD2_DebugLog*.txt
PHD_fits_close_file
PHD_fits_open_diskfile
PHD_fits_create_file

So it looks like the guider started out as Phd2, which is distributed under the BSD license. Looking at the guider log, we see a few familiar functions from Phd2, with extensions that make sense to support the tablet app.
 1-23_23:11:02.116673 [handle_cli_input_event]->4400:{  "id" : 56,  "method" : "get_ra_dec_history"}
 1-23_23:11:02.116816 [do_notify1]<-4400(0):{"jsonrpc":"2.0","method":"get_ra_dec_history","error":"history is empty now","code":321,"id":56}
 1-23_23:11:02.117046 [Wait]join thread success
 1-23_23:11:02.117154 [Wait]join thread>
 1-23_23:11:02.118127 [handle_cli_input_event]->4400:{  "id" : 57,  "method" : "get_camera_binning"}
 1-23_23:11:02.118321 [do_notify1]<-4400(0):{"jsonrpc":"2.0","method":"get_camera_binning","error":"device not connected","code":318,"id":57}
 1-23_23:11:02.118515 [Wait]join thread success
 1-23_23:11:02.118624 [Wait]join thread>
 1-23_23:11:02.119311 [handle_cli_input_event]->4400:{  "id" : 58,  "method" : "scope_get_track_state"}
 1-23_23:11:02.119458 [do_notify1]<-4400(0):{"jsonrpc":"2.0","method":"scope_get_track_state","error":"mount is not connected","code":315,"id":58}
 1-23_23:11:02.119651 [Wait]join thread success
 1-23_23:11:02.119760 [Wait]join thread>
 1-23_23:11:02.121107 [handle_cli_input_event]->4400:{  "id" : 59,  "method" : "scope_get_ra_dec"}
 1-23_23:11:02.121352 [do_notify1]<-4400(0):{"jsonrpc":"2.0","method":"scope_get_ra_dec","error":"fail to operate","code":207,"id":59}
 1-23_23:11:02.121588 [Wait]join thread success
 1-23_23:11:02.121733 [Wait]join thread>
 1-23_23:11:02.121813 [handle_cli_input_event]->4400:{  "id" : 60,  "method" : "scope_is_moving"}
 1-23_23:11:02.121950 [do_notify1]<-4400(0):{"jsonrpc":"2.0","method":"scope_is_moving","error":"mount is not connected","code":315,"id":60}
 1-23_23:11:02.122144 [Wait]join thread success
 1-23_23:11:02.122299 [handle_cli_input_event]->4400:{  "id" : 61,  "method" : "get_flip_calibration"}

Digging through strings output of the 1.7.8 indiserver in /usr/bin nets us some gems as well:
pi@asiair:/usr/bin $ strings indiserver | grep indi | more
/home/pi/project/gitee-indi-1.7.8/libindi
/home/pi/project/gitee-indi-1.7.8/libindi/libs
indiserver.c
indidevapi.h
/home/pi/project/gitee-indi-1.7.8/libindi
/home/pi/project/gitee-indi-1.7.8/libindi/libs
indi_tstamp
indiFIFO
indi_port
indiRun
indiListen
/home/pi/project/gitee-indi-1.7.8/build/libindi-minsizerel
/home/pi/project/gitee-indi-1.7.8/libindi/indiserver.c
/home/pi/project/gitee-indi-1.7.8/libindi/fq.c
/home/pi/project/gitee-indi-1.7.8/libindi/libs/lilxml.c
indiserver.c
indi_tstamp
indiFIFO
root@asiair:/usr/bin# strings zwo_deleteStarsTool  | grep Siril
FITS image format %d is not supported by Siril.

So, yeah. Binary distributions of modified source trees for more than one open source kit. I don't know enough about licensing for the third party drivers, but it appears a few of those have been modified as well, from reading other forums where folks have had issues with those particular mounts. If they're contributed to the indi-3rdpart repo, that's also LGPL-2.1, so source/changes needs to be provided for those as well. Siril is GPL3. Phd2 is BSD-3, which requires disclosure of the license and copyright notice.

If an INDI server is running on something, I expect a certain behavior profile, like being able to load drivers and have them work. As configured, the indiserver distributed by ZWO on the ASIAir is deliberately configured to prohibit the use of hardware from competing vendors, which is anti-thetical to what I consider the open source spirit to be. Another word for that is 'anti-competitive'.

This is extra shady because ZWO has INDI drivers for their hardware, but they don't use them on the ASIair. They aren't even present on the unit. If ZWO wanted to leverage the indiserver legally in their product, they could ship it with everyone else's drivers removed, eat their own dog food, and make sure their INDI drivers are best of breed. Just my two cents.

Edit: Oh, looking at the ASI drivers I see that ZWO didn't write them. My bad.
Second edit: First edit broke my markup.
The following user(s) said Thank You: gehelem, Peter Sütterlin, Inder, Chris Kuethe
Last edit: 1 year 2 months ago by Bill Nash.
1 year 2 months ago #89837

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

  • Posts: 22
  • Thank you received: 30
Cracking open the ASIAir 2.0 xapk..
billn@Hadriel:~$ cp Downloads/ASIAIR_2.0_Apkpure.xapk .
billn@Hadriel:~$ file ASIAIR_2.0_Apkpure.xapk
ASIAIR_2.0_Apkpure.xapk: Zip archive data, at least v2.0 to extract
billn@Hadriel:~$ mkdir apk
billn@Hadriel:~$ cd apk
billn@Hadriel:~/apk$ unzip ../ASIAIR_2.0_Apkpure.xapk > apk.manifest
billn@Hadriel:~/apk$ ls
Android  apk.manifest  com.zwoasi.asiair.apk  icon.png  manifest.json

APKs are just ZIP compressed files, nothing exotic. I'm not an android dev, xapk looks like some type of extended APK format, so there's an APK inside the APK.

After some hunting, turns out I didn't need to unpack the extra APK. In previous versions, what I was looking for was in the assets/ dir of the APK, but this time it's in the patch section of the XAPK:
billn@Hadriel:~/apk/Android/obb/com.zwoasi.asiair$ unzip patch.76.com.zwoasi.asiair.obb
Archive:  patch.76.com.zwoasi.asiair.obb
   creating: patch/
  inflating: patch/.gitignore
  inflating: patch/air_pi3
  inflating: patch/air_pi4
  inflating: patch/readme.md

air_pi3 and air_pi4 are themselves bzip2 compressed archives, these will be transferred to the ASIair gadgets for updates.
billn@Hadriel:~/apk/Android/obb/com.zwoasi.asiair/patch$ file air*
air_pi3: bzip2 compressed data, block size = 900k
air_pi4: bzip2 compressed data, block size = 900k
 
billn@Hadriel:~/apk/Android/obb/com.zwoasi.asiair/patch$ bunzip2 air_pi4
bunzip2: Can't guess original name for air_pi4 -- using air_pi4.out
 
billn@Hadriel:~/apk/Android/obb/com.zwoasi.asiair/patch$ bunzip2 air_pi4
bunzip2: Can't guess original name for air_pi4 -- using air_pi4.out
 
billn@Hadriel:~/apk/Android/obb/com.zwoasi.asiair/patch$ tar -xvf air_pi4.out
update_package.sh
deb/
deb/libopencv-calib3d3.2_3.2.0+dfsg-6_armhf.deb
deb/indi_stargo-y_armhf.deb
deb/libcdio-paranoia2_10.2+0.94+2-4_armhf.deb
deb/libsdl2-2.0-0_2.0.9+dfsg1-1+rpt1_armhf.deb
deb/libcdio-cdda2_10.2+0.94+2-4_armhf.deb
deb/libfuse2_2.9.9-1_armhf.deb
deb/exfat-fuse_1.3.0-1_armhf.deb
deb/asiair_armhf.deb
deb/python3-ephem_3.7.6.0-7+b1_armhf.deb
deb/ffmpeg_7%3a4.1.4-1+rpt1~deb10u1_armhf.deb
deb/libntfs-3g883_2017.3.23AR.3-3_armhf.deb
deb/indi-y_armhf.deb
deb/nginx_1.11.8_armhf.deb
deb/libopencv-flann3.2_3.2.0+dfsg-6_armhf.deb
deb/indi_starbook-y_armhf.deb
deb/indi_eqmod-y_armhf.deb
deb/libavdevice58_7%3a4.1.4-1+rpt1~deb10u1_armhf.deb
deb/libgphoto2-6_2.5.27-1_armhf.deb
deb/librockchip-mpp1_1.5.0-1_armhf.deb
deb/libopencv-video3.2_3.2.0+dfsg-6_armhf.deb
deb/libopencv-ml3.2_3.2.0+dfsg-6_armhf.deb
deb/ntfs-3g_2017.3.23AR.3-3_armhf.deb
deb/fuse_2.9.9-1_armhf.deb
deb/libxss1_1%3a1.2.3-1_armhf.deb
deb/libgphoto2-port12-2.5.27-1_armhf.deb
deb/libopencv-features2d3.2_3.2.0+dfsg-6_armhf.deb
others/
others/pro-smb.conf
others/plus-smb.conf
others/dwc2.ko
others/xhci-pci.ko

I assume the IOS package does something similar, both app stores are used as a vehicle to distribute the modified libraries that ZWO hasn't provided source for, which puts them in breach of contract for the relevant GPL/LGPL/BSD licenses, which means they have no rights to distribute the code, which puts them in violation of the developer agreements for both stores.

Fun!

edit: whoops markdown
The following user(s) said Thank You: gehelem
Last edit: 1 year 2 months ago by Bill Nash. Reason: fixed markdown formatting
1 year 2 months ago #89997

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

  • Posts: 22
  • Thank you received: 30
And to answer the original question, the Pro and Plus get the same updates. The update scripts in the asi_pi4 tarball check for a Pi4 or the RK3568 board.
billn@Hadriel:~/apk/Android/obb/com.zwoasi.asiair/patch$ grep Rock update_package.sh
cat /proc/device-tree/model|grep -i -e 'Pi 4' -e 'Pi Compute Module 4' -e 'ZWO AirPlus-RK3568 (Linux)' -e 'Rockchip'
        cat /proc/device-tree/model|grep -i -e 'Pi Compute Module 4' -e 'ZWO AirPlus-RK3568 (Linux)' -e 'Rockchip'
cat /proc/device-tree/model|grep -i -e 'Pi Compute Module 4' -e 'ZWO AirPlus-RK3568 (Linux)' -e 'Rockchip'
1 year 2 months ago #90002

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

  • Posts: 350
  • Thank you received: 107
1 year 2 months ago #90014

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

Time to create page: 0.885 seconds