首页 > 解决方案 > Python程序airnef不适用于佳能3000D

问题描述

遗憾的是,佳能没有为佳能 3000D 相机提供 EOS Utility,用于将图像无线实时传输到计算机。

我目前正在尝试使用 testcams.com 的 airnef 软件,它是一个基于 Python 的开源应用程序。它自 2016 年以来没有更新,因此它不适用于佳能 3000D。

Airnef 应用程序运行并连接到相机,它甚至设法获取相机型号和序列号。但是在下载图像时,我收到以下错误。

MTP_OP_GetObjectInfo: Socket error, partial data received - 0x0 of 0x0 bytes for specific payload, 0x0 of 0x0 of total data bytes expected. Error: timed out

源代码 http://www.testcams.com/airnef/Version_1.1/airnef_v1.1_Source.zip

调试日志

airnef v1.1 - Wireless transfer of images/movies for Nikon cameras [GPL v3]
Copyright (c) TestCams.com, Time: 11/28/20 16:55:22, Py: 2.7.16, OS: Darwin

Orig cmd line: ['airnefcmd.py']
Processed cmd line: {'ssdp_addservice': None, 'connecttimeout': 10, 'printstackframes': 'no', 'excludefolders': None, 'rtd_maxsecsbeforeforceinitialobjlistget': 5, 'realtimedownload': 'disabled', 'outputdir': './', 'extlist': None, 'camerasleepwhendone': 'yes', 'slot': 'firstfound', 'startdate': None, 'filenamespec': None, 'downloadhistory': 'skipfiles', 'rtd_pollingmethod': None, 'maxgetobjbuffersizekb': 32768, 'sonyuniquecmdsenable': 1, 'ssdp_discoverytimeoutsecsperattempt': 2, 'ssdp_discoveryattempts': 3, 'initcmdreq_guid': '0x7766554433221100-0x0000000000009988', 'downloadexec': None, 'ssdp_discoveryflags': None, 'ssdp_addmulticastif': None, 'cameratransferlist': 'useifavail', 'socketreadwritetimeout': 5, 'opensessionid': None, 'retrydelaysecs': 5, 'downloadexec_options': [], 'ifexists': 'uniquename', 'dirnamespec': None, 'logginglevel': 'debug', 'retrycount': 9223372036854775807, 'mtpobjcache_maxagemins': 0, 'ipaddress': '192.168.1.33', 'maxgetobjtransfersizekb': 1024, 'suppressdupconnecterrmsgs': 'yes', 'onlyfolders': None, 'downloadexec_extlist': None, 'enddate': None, 'realtimepollsecs': 3, 'maxclockdeltabeforesync': '5', 'initcmdreq_hostver': 65536, 'mtpobjcache': 'enabled', 'action': 'getfiles', 'transferorder': 'oldestfirst', 'rtd_mtppollingmethod_newobjdetection': 'objlist', 'initcmdreq_hostname': 'airnef'}
openConnection(): Attempting connection to 192.168.1.33:15740
>> Connection Failed <<                                                       

There was no response at 192.168.1.33. Please confirm that your camera's
Wifi is enabled and that you have specified the correct IP address.

openConnection(): Attempting connection to 192.168.1.33:15740                 
openConnection(): Attempting connection to 192.168.1.33:15740                 
>> Connection Failed <<                                                       

Could not open socket: [Errno 64] Host is down

openConnection(): Attempting connection to 192.168.1.33:15740                 
openConnection(): Attempting connection to 192.168.1.33:15740                 
Connection established to 192.168.1.33:15740                                  
sendInitCmdReq(): Sending MTP_TCPIP_REQ_INIT_CMD_REQ
0000: 01 00 00 00 00 11 22 33 - 44 55 66 77 88 99 00 00 ......"3 - DUfw....
0010: 00 00 00 00 61 00 69 00 - 72 00 6e 00 65 00 66 00 ....a.i. - r.n.e.f.
0020: 00 00 00 00 01 00                                 ......
sendInitCmdReq() response:
0000: 02 00 00 00 01 00 00 00 - 00 00 00 00 00 00 00 00 ........ - ........
0010: 00 01 74 bf c0 9a e4 27 - 45 00 4f 00 53 00 33 00 ..t....' - E.O.S.3.
0020: 30 00 30 00 30 00 44 00 - 00 00 00 00 01 00       0.0.0.D. - ......
Session ID = 0x00000001
openConnection(): Attempting connection to 192.168.1.33:15740
sendInitEvents(): Sending MTP_TCPIP_REQ_INIT_EVENTS                           
0000: 03 00 00 00 01 00 00 00 -                         ........ - 
sendInitEvents() response:
0000: 04 00 00 00                                       ....
sendProbeRequest(): Sending probe request
0000: 0d 00 00 00                                       ....
sendProbeRequest() response:
0000: 0e 00 00 00                                       ....
execMtpOp: MTP_OP_GetDeviceInfo - CmdReq payload:
0000: 06 00 00 00 01 00 00 00 - 01 10 01 00 00 00       ........ - ......
execMtpOp: MTP_OP_GetDeviceInfo - DataStart payload [expected data bytes is 0x22b]
0000: 09 00 00 00 01 00 00 00 - 2b 02 00 00 00 00 00 00 ........ - +.......
execMtpOp: MTP_OP_GetDeviceInfo - Data payload [ID c] (0x00000233 bytes):
0000: 0c 00 00 00 01 00 00 00 - 64 00 06 00 00 00 64 00 ........ - d.....d.
0010: 00 00 00 a7 00 00 00 14 - 10 15 10 16 10 01 10 02 ........ - ........
0020: 10 03 10 06 10 04 10 01 - 91 05 10 02 91 07 10 08 ........ - ........
0030: 10 03 91 09 10 04 91 0a - 10 1b 10 07 91 0c 10 0d ........ - ........
0040: 10 0b 10 05 91 0f 10 06 - 91 10 91 27 91 0b 91 08 ........ - ...'....
0050: 91 09 91 0c 91 0e 91 0f - 91 15 91 14 91 13 91 16 ........ - ........
0060: 91 17 91 20 91 f0 91 18 - 91 21 91 f1 91 1d 91 0a ... .... - .!......
0070: 91 1b 91 1c 91 1e 91 1a - 91 53 91 54 91 60 91 55 ........ - .S.T.`.U
0080: 91 57 91 58 91 59 91 5a - 91 1f 91 fe 91 ff 91 28 .W.X.Y.Z - .......(
0090: 91 29 91 2d 91 2e 91 2f - 91 2c 91 30 91 31 91 32 .).-.../ - .,.0.1.2
00a0: 91 33 91 34 91 2b 91 35 - 91 36 91 37 91 38 91 39 .3.4.+.5 - .6.7.8.9
00b0: 91 3a 91 3b 91 3c 91 da - 91 db 91 dc 91 dd 91 de .:.;.<.. - ........
00c0: 91 d8 91 d9 91 d7 91 d5 - 91 2f 90 41 91 42 91 43 ........ - ./.A.B.C
00d0: 91 3f 91 33 90 68 90 69 - 90 6a 90 6b 90 6c 90 6d .?.3.h.i - .j.k.l.m
00e0: 90 6e 90 6f 90 3d 91 80 - 91 81 91 82 91 83 91 84 .n.o.=.. - ........
00f0: 91 85 91 40 91 01 98 02 - 98 03 98 04 98 05 98 c0 ...@.... - ........
0100: 91 c1 91 c2 91 c3 91 c4 - 91 c5 91 c6 91 c7 91 c8 ........ - ........
0110: 91 c9 91 ca 91 cb 91 cc - 91 ce 91 cf 91 d0 91 d1 ........ - ........
0120: 91 d2 91 e1 91 e2 91 e3 - 91 e4 91 e5 91 e6 91 e7 ........ - ........
0130: 91 e8 91 e9 91 ea 91 eb - 91 ec 91 ed 91 ee 91 ef ........ - ........
0140: 91 f8 91 f9 91 f2 91 f3 - 91 f4 91 f7 91 22 91 23 ........ - .....".#
0150: 91 24 91 f5 91 f6 91 52 - 90 53 90 57 90 58 90 59 .$.....R - .S.W.X.Y
0160: 90 5a 90 5f 90 07 00 00 - 00 09 40 04 40 05 40 03 .Z._.... - ..@.@.@.
0170: 40 02 40 07 40 01 c1 05 - 00 00 00 02 d4 07 d4 06 @.@.@... - ........
0180: d4 03 d3 01 50 01 00 00 - 00 01 38 0c 00 00 00 01 ....P... - ..8.....
0190: 30 02 30 06 30 0a 30 08 - 30 01 38 01 b1 03 b1 02 0.0.0.0. - 0.8.....
01a0: bf 00 38 04 b1 05 b1 0b - 43 00 61 00 6e 00 6f 00 ..8..... - C.a.n.o.
01b0: 6e 00 20 00 49 00 6e 00 - 63 00 2e 00 00 00 10 43 n. .I.n. - c......C
01c0: 00 61 00 6e 00 6f 00 6e - 00 20 00 45 00 4f 00 53 .a.n.o.n - . .E.O.S
01d0: 00 20 00 33 00 30 00 30 - 00 30 00 44 00 00 00 08 . .3.0.0 - .0.D....
01e0: 33 00 2d 00 31 00 2e 00 - 30 00 2e 00 31 00 00 00 3.-.1... - 0...1...
01f0: 21 34 00 39 00 66 00 63 - 00 35 00 37 00 66 00 63 !4.9.f.c - .5.7.f.c
0200: 00 34 00 31 00 61 00 31 - 00 34 00 37 00 63 00 32 .4.1.a.1 - .4.7.c.2
0210: 00 38 00 64 00 32 00 36 - 00 32 00 66 00 63 00 35 .8.d.2.6 - .2.f.c.5
0220: 00 36 00 61 00 32 00 63 - 00 62 00 37 00 66 00 39 .6.a.2.c - .b.7.f.9
0230: 00 00 00                                          ...
execMtpOp: MTP_OP_GetDeviceInfo - CmdResponse payload (resp="MTP_RESP_Ok"):
0000: 07 00 00 00 01 20 01 00 - 00 00                   ..... .. - ..
MtpDeviceInfoTuple(standardVersion=100, vendorExtensionID=6, vendorExtensionVersion=100, vendorExtensionDescStr='', operationsSupportedSet=set([4097, 4098, 4099, 4100, 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4111, 38915, 4116, 4117, 4118, 38916, 4123, 38917, 36911, 36915, 36946, 36947, 36951, 36952, 36953, 36954, 36959, 36968, 36969, 36970, 36971, 36972, 36973, 36974, 36975, 38913, 37121, 37122, 37123, 37124, 37125, 37126, 37127, 37128, 37129, 37130, 37131, 37132, 37134, 37135, 37136, 37139, 37140, 37141, 37142, 37143, 37144, 37146, 37147, 37148, 37149, 37150, 37151, 37152, 37153, 37154, 37155, 37156, 37159, 37160, 37161, 37163, 37164, 37165, 37166, 37167, 37168, 37169, 37170, 37171, 37172, 37173, 37174, 37175, 37176, 37177, 37178, 37179, 37180, 37181, 37183, 37184, 37185, 37186, 37187, 37203, 37204, 37205, 37207, 37208, 37209, 37210, 37216, 37248, 37249, 37250, 37251, 37252, 37253, 37367, 37312, 37313, 37314, 37315, 37316, 37317, 37318, 37319, 37320, 37321, 37322, 37323, 37324, 37326, 37327, 37328, 37329, 37330, 37333, 37335, 37336, 37337, 37338, 37339, 37340, 37341, 37342, 37345, 37346, 37347, 37348, 37349, 37350, 37351, 37352, 37353, 37354, 37355, 37356, 37357, 37358, 37359, 37360, 37361, 37362, 37363, 37364, 37365, 37366, 38914, 37368, 37369, 37374, 37375]), eventsSupportedSet=set([49409, 16386, 16387, 16388, 16389, 16391, 16393]), devicePropertiesSupportedSet=set([20481, 54274, 54019, 54278, 54279]), captureFormatsSupportedSet=set([14337]), imageFormatsSupportedSet=set([14336, 12289, 12290, 45315, 45316, 45317, 12294, 14337, 12296, 12298, 45313, 48898]), manufacturerStr=u'Canon Inc.', modelStr=u'Canon EOS 3000D', deviceVersionStr=u'3-1.0.1', serialNumberStr=u'49fc57fc41a147c28d262fc56a2cb7f9')
Camera Model "Canon EOS 3000D", S/N "49fc57fc41a147c28d262fc56a2cb7f9"
execMtpOp: MTP_OP_OpenSession - CmdReq payload:
0000: 06 00 00 00 01 00 00 00 - 02 10 02 00 00 00 01 00 ........ - ........
0010: 00 00                                             ..
execMtpOp: MTP_OP_OpenSession - CmdResponse payload (resp="MTP_RESP_Ok"):
0000: 07 00 00 00 01 20 02 00 - 00 00                   ..... .. - ..
execMtpOp: MTP_OP_Canon_SetDevicePropValue - CmdReq payload:
0000: 06 00 00 00 02 00 00 00 - 10 91 03 00 00 00       ........ - ......
execMtpOp: Sending MTP_TCPIP_PAYLOAD_ID_DataStart
0000: 09 00 00 00 03 00 00 00 - 0c 00 00 00 00 00 00 00 ........ - ........
execMtpOp: Sending MTP_TCPIP_PAYLOAD_ID_DataPayloadLast:
0000: 0c 00 00 00 03 00 00 00 - 0c 00 00 00 7c d1 00 00 ........ - ....|...
0010: 52 ca c1 5f                                       R.._
execMtpOp: MTP_OP_Canon_SetDevicePropValue - CmdResponse payload (resp="MTP_RESP_DeviceBusy"):
0000: 07 00 00 00 19 20 03 00 - 00 00                   ..... .. - ..
Failed setting camera's date/time to 11/28/20 04:56:02 PM
execMtpOp: MTP_OP_GetStorageIDs - CmdReq payload:
0000: 06 00 00 00 01 00 00 00 - 04 10 04 00 00 00       ........ - ......
execMtpOp: MTP_OP_GetStorageIDs - DataStart payload [expected data bytes is 0x8]
0000: 09 00 00 00 04 00 00 00 - 08 00 00 00 00 00 00 00 ........ - ........
execMtpOp: MTP_OP_GetStorageIDs - Data payload [ID c] (0x00000010 bytes):
0000: 0c 00 00 00 04 00 00 00 - 01 00 00 00 01 00 02 00 ........ - ........
execMtpOp: MTP_OP_GetStorageIDs - CmdResponse payload (resp="MTP_RESP_Ok"):
0000: 07 00 00 00 01 20 04 00 - 00 00                   ..... .. - ..
All Storage IDs:
  storageId[0] = 0x00020001
  storageId to be used for this invocation: 00020001 [cardsPresentBitmap=0x0001]
execMtpOp: MTP_OP_GetStorageInfo - CmdReq payload:
0000: 06 00 00 00 01 00 00 00 - 05 10 05 00 00 00 01 00 ........ - ........
0010: 02 00                                             ..
execMtpOp: MTP_OP_GetStorageInfo - DataStart payload [expected data bytes is 0x24]
0000: 09 00 00 00 05 00 00 00 - 24 00 00 00 00 00 00 00 ........ - $.......
execMtpOp: MTP_OP_GetStorageInfo - Data payload [ID c] (0x0000002c bytes):
0000: 0c 00 00 00 05 00 00 00 - 04 00 03 00 00 00 00 00 ........ - ........
0010: a0 dc 0e 00 00 00 00 00 - 3e dc 0e 00 00 00 ff ff ........ - >.......
0020: ff ff 03 53 00 44 00 00 - 00 00 00 00             ...S.D.. - ....
execMtpOp: MTP_OP_GetStorageInfo - CmdResponse payload (resp="MTP_RESP_Ok"):
0000: 07 00 00 00 01 20 05 00 - 00 00                   ..... .. - ..
MtpStorageInfoTuple(storageType=4, fileSystemType=3, accessCapability=0, maxCapacityBytes=63831015424, freeSpaceBytes=63824592896, freeSpaceInImages=4294967295, storageDescription=3, volumeLabel=u'\u4400')
execMtpOp: MTP_OP_GetObjectHandles - CmdReq payload:
0000: 06 00 00 00 01 00 00 00 - 07 10 06 00 00 00 01 00 ........ - ........
0010: 02 00 00 00 00 00 00 00 - 00 00                   ........ - ..
execMtpOp: MTP_OP_GetObjectHandles - DataStart payload [expected data bytes is 0x14]
0000: 09 00 00 00 06 00 00 00 - 14 00 00 00 00 00 00 00 ........ - ........
execMtpOp: MTP_OP_GetObjectHandles - Data payload [ID c] (0x0000001c bytes):
0000: 0c 00 00 00 06 00 00 00 - 04 00 00 00 00 00 00 90 ........ - ........
0010: 00 00 90 91 52 00 90 91 - 00 00 08 a0             ....R... - ....
execMtpOp: MTP_OP_GetObjectHandles - CmdResponse payload (resp="MTP_RESP_Ok"):
0000: 07 00 00 00 01 20 06 00 - 00 00                   ..... .. - ..
All MTP object handles (count=4):
0000: 90000000 91900000 - 91900052 a0080000 

MTP Object cache has 0 objects, age is 0:02:08.667459
MTP object cache entries [count=0]
Retrieving list of images/files from camera: 0/4     execMtpOp: MTP_OP_GetObjectInfo - CmdReq payload:
0000: 06 00 00 00 01 00 00 00 - 08 10 07 00 00 00 00 00 ........ - ........
0010: 00 90                                             ..
MTP_OP_GetObjectInfo: Socket error, partial data received - 0x0 of 0x0 bytes for specific payload, 0x0 of 0x0 of total data bytes expected. Error: timed out

openConnection(): Attempting connection to 192.168.1.33:15740                 
Attempting to establish camera connection at 192.168.1.33:15740 ^C
>> Terminated by user keypress - cleaning up, please wait... <<

Wireshark 日志

下面是我将 USB 插入计算机并从佳能 EOS Utility 运行“自动下载所有图像”时进行的 Wireshark 捕获。我找到了一个在相机上显示图像文件名的捕获。希望这能有所帮助

图片:使用 Canon EOS Utility 3 通过 USB 的 Wireshark 日志

标签: pythonmacoswifiphotography

解决方案


推荐阅读