From 65ea7235bca017b571fb4cd2fe5449a917820043 Mon Sep 17 00:00:00 2001 From: rtlsdrblog Date: Thu, 17 Oct 2019 13:18:24 +0100 Subject: [PATCH] add rtl_biast, add biast EEPROM hack --- README | 2 + build/install_manifest.txt | 3 +- build/src/librtlsdr.a | Bin 97414 -> 98082 bytes build/src/librtlsdr.so.0.6git | Bin 92192 -> 92264 bytes build/src/rtl_adsb | Bin 24604 -> 24604 bytes build/src/rtl_biast | Bin 0 -> 14528 bytes build/src/rtl_eeprom | Bin 17772 -> 17772 bytes build/src/rtl_fm | Bin 39772 -> 39772 bytes build/src/rtl_power | Bin 30040 -> 30040 bytes build/src/rtl_sdr | Bin 19156 -> 19156 bytes build/src/rtl_tcp | Bin 24868 -> 24868 bytes build/src/rtl_test | Bin 24680 -> 24680 bytes include/rtl-sdr.h | 10 +++ src/CMakeLists.txt | 10 ++- src/librtlsdr.c | 28 ++++++++ src/rtl_biast.c | 125 ++++++++++++++++++++++++++++++++++ 16 files changed, 176 insertions(+), 2 deletions(-) create mode 100755 build/src/rtl_biast create mode 100644 src/rtl_biast.c diff --git a/README b/README index 3a11c11..d329b20 100644 --- a/README +++ b/README @@ -10,3 +10,5 @@ Modified RTL-SDR Blog Version 1) VCO PLL current fix - Improves stability at frequencies above ~1.5 GHz https://www.rtl-sdr.com/beta-testing-a-modified-rtl-sdr-driver-for-l-band-heat-issues/ 2) RTL_TCP ring buffer enhancement by Stephen Blinick https://www.rtl-sdr.com/significantly-improving-rtl_tcps-performance-with-ring-buffers/ 3) Enabled direct sampling for rtl_tcp +4) rtl_biast program added, including the ability to turn on/off any GPIO +5) Hack to force the bias tee to always be on by setting the unused IR endpoint bit to 0 in the EEPROM with "rtl_eeprom -i 0" diff --git a/build/install_manifest.txt b/build/install_manifest.txt index ce6c476..d22899b 100644 --- a/build/install_manifest.txt +++ b/build/install_manifest.txt @@ -12,4 +12,5 @@ /usr/local/bin/rtl_fm /usr/local/bin/rtl_eeprom /usr/local/bin/rtl_adsb -/usr/local/bin/rtl_power \ No newline at end of file +/usr/local/bin/rtl_power +/usr/local/bin/rtl_biast \ No newline at end of file diff --git a/build/src/librtlsdr.a b/build/src/librtlsdr.a index fb57b96268fe7c0623b18c7dcf0ce46c77b6e149..91ab6460f2eac224c4ad6cb76e3253d73fed68a4 100644 GIT binary patch delta 10628 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 ZywY{>^&^psG4P-7H;RUWZ~f}6{{b7}DF^@n diff --git a/build/src/librtlsdr.so.0.6git b/build/src/librtlsdr.so.0.6git index 50250d76f610961005c62224d926a7fe657d7354..bc14e71f6c5ed8abff57df3a6fe2bf184d48d3d2 100755 GIT binary patch delta 22150 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 G_x}KmXajlx delta 21196 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 F|3B?HHk1GW diff --git a/build/src/rtl_adsb b/build/src/rtl_adsb index ba4e9c4865635bf1d428acc4e3f60565bc826492..3d041b9a37f54ca04a8b7d5d0067f94f7e604cd9 100755 GIT binary patch delta 2295 zcmc(gk55xq6vyv@7AUk*`dZqG^%ZNO@F0b_1&moJa|AMR!DTKk(kWZWX2!zEqE5F2 z&1R-k=8rQr$uxatYTSksQ`|5E1(Pj0XT%s5nTgtxw}3duwwQoZ-_C6{-alZ;+T43S z-*fJL@1Aqs%iA{y`v##$1$)IU*JoE2%4af*zdJp7Z2h=jzqmBo3u-D9;d0|e$VGoz zJDBlMnh(11T$%#&@J?C~D$$?b4s-EP`YMTt*+LtQjxIS(*_N3)&nm1V%#k2~YiPdnn3Q~lZ_E)zH)uvcK0 zz*d1X1ZEG}M%SO#lh@}wmE`s~7vnp9u&Aw;2wdG5M!Bbj^#aFpJY~bY`!6)t;3gWuR;e7*rL#a zZITQU?v^CaDq3U8^4=cYK5+Y#uHVe`s$+Z)V|%r99Fl55L6g0Z-i>m*3?W=*m&!9} zPli{G8LVn7o2g?4L8p>tg0_&phn@Bc$i@ryDwu^9hXNOHp~DBm7mq~q%OPz)ABCd5# zQua+QC%k|gTnjwc?o;;cgZL;}FWGup%e6H$Fn$`(xqPMxitsDX;2qZ+kcCa|AY8@W z?mRe&N8JjX!%?>kLpbABJm1nc47 z>u?b@e+AvsQ{aOyvAUqp^vzxUrh#hGjco-%>d1it$$#c9uWZ8@3#pf#jQz?$jlIi# ztJN5FBbH9Chn z7Ev}&7R&GzE-#kdAI|8LlhoEuvX#6>ss#5~ zaKECsHj_<-&HKO_y0jK-Dv^rj z(OT~L;d)1WYUjW>vvz5j^gM<5HG~rl-<^2~zM*i4U%!yHti>aA9dJY>RF# z{UV1xXa1^Mcpl%Z3NEnE0+vH>%Pk8q8`%I2iADyE2fE(cO@5s$eb3kw*<1_Y@h8gn zgv{-I*}(qC@$7$ha~ui%v5YdK9QlVjJz;s~NzH4KtWZ*$5}H>osWTI{o63>YSqa-0 zbvzvbD)x!RLFkQYi(51DdAX85Gpi#wE9fPpe~zxLUuA&q=t#roS=6DnM%l>Em5ZH? tJ|jO-Hx3Z-ZrwtSh@Zlamaxyn@86xxm>Dmvl(0T*HYS=A4Tn#s{0k!%+Ry+1 delta 2289 zcmc(f@lR7%6vywOEl_Bs@LEg7=0OS+cx9ESAxL!(n?+$5Ps<63+P$W+WU6Q;hM+iJXjz>+n&_k6zR z+kZYmly;y z_9S|s7tbUrAmjZ+KP<$&q#$HrPtqE2g-yxFj8K9jmPVAVZFta{3DtPgDnoTxvz`UG ziAU0$!LoV4*r^>+>F4%n+0>x+lotr>6F67kxdPh-wg_x|!Wne_Lp^>z=X-GuM!EP? z2;30(s=${7J}2;qz=Hz!3w%)E0|IyJ!DlzxEd<&H-YW3>0>3Tr>jJMAxKZGj1+II_ zLCSvVQ$buN@B)E-0_O@mS75uq7J-cdKYaWw;d{hE-tSloguo4fuL^ug;Bx|x2s|io zzrY7M({E};@r1Fh_!g^IBT%7Yd4|>co~}v@_Hf(K?c=(BGbLLc<9is}qb1@AsRoMBZ1+Mcme^$|$CY-eB#HJUXR8sT zO^u{6b<7}W18M#7v$&P?KiFw6g;{vsUJh2YIutmEiyR)ffB{Dqgt65juNrK(}i_a7yOZCu$?Qor)T6u?^g;u+I43Flb(v0h z30pJgyRSW>?AX@m?_{&d*3w$8Z52b~$MH<2$2?9Ee)0pnpVvJFo@e?o+E`GIEmAXl9Yf>H)}^J;`&7=)5N>n<_xh@!79&0h0Pp)ea1C9>GK}J);u_c<-cr0jotm9j zUIQ!ejdK5d+bm$|^tFszfn|^_pdrynrtw(UH}#TVC!0WeimcrVcw|Azt_n-AKMmOb zIF|i)5697pJ1Z$O%8@YxONv>Zd0g{a#48ln=9uP{i|dq_?WJf7@Gsoj-!}jN diff --git a/build/src/rtl_biast b/build/src/rtl_biast new file mode 100755 index 0000000000000000000000000000000000000000..ef777e2c5c3958226083591637c5953b48d59625 GIT binary patch literal 14528 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 URCc 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 Ym1(D-Q_Gu$w#iqqn28yB)CAvu11}j_umAu6 literal 0 HcmV?d00001 diff --git a/build/src/rtl_eeprom b/build/src/rtl_eeprom index 7f2ea8779872ad1aab5f5222df0045a3fb82d4a1..7114de2683de065feffb14d3375d4d31005a23bd 100755 GIT binary patch delta 170 zcmaFU#rUR+al-;ek?Gb|&lx_RvFZ7@#I|#BXurS~6V}aJ81FDLKASv|*`ASO@CspjS_jCU9rA5WghY|qF#`69DC z}UKoS&&tq@%>~+R)0qR%@bLFGcp=Zp1__k`8~U*Gy?-8 z5dL6bU=RRe5D>}CD3jie! RI?A&GB^VxTe(KoH3;+UKG*AEl diff --git a/build/src/rtl_fm b/build/src/rtl_fm index 8d1039ae6870780fe28d84e8870d577d1337ebaa..31c245b2af16d8e7991334fd4d982b3a855e997f 100755 GIT binary patch delta 7634 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 RylK={3t{0H-lonG`9DGmsJj3F delta 7699 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 delta 198 zcmccdit)xP#tjP?MW!Zb%sSQ={3c<)sr1$($IK#o=bqTSg>eEiyY10kEI}6riJAMW|J-7A#Bn`n?s*YhuG6mb0`0d;$R$lQ9HO0XUO^ z1Rnt$lc5AJ0Undl1U~@`vk?U!0RbtKF$O;YB9n0jZvjHH;RZVc1Y&G&XOkTYT$6eV zY#9Ln0RZm-000mG001BW000zeX$=4X0{}>q0Sg}iNV6deOC$kOlWi|w0&)tIKqfM> eFn|F8aGu`?Mb&KH!dSz^C_LGa#h=l1awCg8 zqvYg;Ec%SnlP|K^GjeVgWR+)RRGVzbX3r=;xsWZN(SGwoHfv@^!^sLfxi*>jKE(Dd{W?J0w12`5T*UVtl%XOI3nTMA#k6-y#n_LyiVYD;?Qip zTLnk6z>Nae3tS^`P~cL5T>{$#Hr?e=Jo~PQGl6e@CzL?oNrAr+_>90`3w%=GV*(#0 zzV;YCKJNwid31c99^f)g6jT|zGPn4R5RBm~RbCB~BiA#(*xa|ZwZPwyWJ}!;7TOU^2 z(>y@@OqzEPcVe5(2jjTirof+Y)FwkYp0Y`G#T4^XQ-9p#iX?JaB-TrsuToFralL^w zUy)q@o4DMU6W96rw7GI0ojmqxX9GpdbB(Ab(}>!q3#(bA`6_bRh}wf&>>fJ9M(nq#M>ytCypL)lr*cb2T@ItDGZej<^~bMM&vVAP3eA$m zdy-p%WT9-Fc7;`ab0o&+`6UahpOTL=kKTz*lGXnfS%MVFt@~)U|4r-P6W<`_D{<5N ze@#zEai?U3zu>4O!3d5?ufhx1Qdn(YPjQ!Kl2=)9P*o`Zd{6W;S$ziIEVSC&$-6)8 z^`yNK@;-$Vg;wM9!a&+sIvL+EyT;3xR7^M*0`9p6=hYCAr7?+369@7%i> zuAtkcV7puc12`;8=HF>Ck;IU;10#uX9FteT0g74y%kf2*WZsyLSe=d-#8H<--^ZBi zWyr@Sw@f2-yFJDC@wgt^w^a2^+84hfZ7>gA=3GdeMg24$aeHVEF}DPnc!!=nr|~wd zT_D338vhTs5FgdJ5f2i-r|~#`OS~r?<5dFYS8vlBT=X`2BVXq)@mWQNkQOnGdx?8+ zVu6eol|tyytY4wCNQTEXzJYDTOK>Z-f5c&GtMCZ5@8H>@k02X&6?-59KQ4X=Ca|GI zfz#MkBHO>bm7F@BOkT}44XV28NFvuYs5Vk{Kg5v|#dwgsIzuEeiKj{e#89T=y60>nzdn)5RyIp86TSk@XD3jq|xUEcrbvQ!p44QosoW;MF z$+~|`$0lDjC3!pXUffG9ZBJ@0`*HPwyUD`1`oG!k1S`R(>pV%N{&m;j=4b;VOPJ<)LRZ?+?%&xW6Eu$CG!QyeyLP ze2yCfQh}9^PY2JHWYWP4!J3EFB78Go@qR+F+%k5dKYs1Ck0+UFSfxWSafy#1%xDds z4=kbW;|^LNjQ0f<=*6}m-;i5_%fK1^G}xIBi?Dd{G8n?{#eu4&bAXxYpev$&F7+6 zJx^Ck^8}{Sn$kv1^K_>){rb=~``21ef35k|7_ECC3{;`>O9HSonzuBW<>om~UAe50 zpjFV1kX{+}Kl<+sSQK@({1wcVRcw97rp-@p-Q2aQqUMK{3*UdDH;0P7b(L)3v#r6A nRf>Vn^CFHB@xmA3w?uqyOR-?JV&Jn{gmpw(eWP8gKhgake0nyB delta 3135 zcmc(hk8@L17RT>NnzkuzNk~hYyvCRCT0)wpNu_SvQKl^x!GSvMh)PF()4IE3JHSvz zyNjE$3%iOifTvFFOk<-{X6#I75QC!#ENi7IQXEm-m0cM~!YfL37TI+Nk@oGmFX?dq z1K-TM_wzmHy!-Aw=f0Z^jl$3LZ5yz#I50`jbJpHOFbNZG0hZX9$ivQ+MtE75F=W zuL}INz!wA_7x=WmCuTTIX+Jt6cnJg^5_mx1UV--tyi4F60(S}AA#fXUc&6T~1;_GPd+c0+5nuw(7uui!)xzcQDOS#12=8P2+->kNUYzTNOa!}B`N6a{ncwIyrNAgfFxHwJU@QkL(IjJis!8Lv=43hB zr!E5ao|&HJcEs~`zh{J=SYYX+3HPagPfo(%@6qSVeNUmsQSGXyhyr&+wOAr*k6}>FB+XZm%OdJ#-0tu~Ge#W#1|uIi zJ%7I1>zbCs*YE_{dF=DlTS)(z`XcIiR_Kt+nV8Zhufm{OfM%xxzrlc0hTGUg?F4o@ zCG&Cew~_xQ9(3B_6b?HjsKqg-;#;ndoXRbob~%iq{z1`QY+vFA^*m>s??tO*^L@lE zA+k_5F1QC(V{)xVLCGmk!iO_DwEI$1&#$*phDY=2Da5#pP~d?jvr|1Ns^ zEj%dM;T#T25)9y&^dfX)OL4X1X^NYe)~>Tquc}b~`JQ-|$!a^kR%~~yBk$p~*PHf6 z$=izOi|yvE#1Ea}t9Fw1f!xZ%-JdV$~CF_=S#M*QO;;>ty?_TlsOkC)~U_efyEDSGyz&OKN=Pliu) z{vU29KCbgpJVHFe8LucAcw=5MMAA_{C1~CAGrhx2@1u9}l|F~RRb=>s9&rl~5pUM{ zEXIk~>-;IYN@Qr!`6jj!FUD?a-^PAw@5N)(9>R+y#~}+}F7<*DPnP}(KEsCj3Vea> z^JT}`+uG!)rd`jr^s0vHXfoH`t1hDoAH&Fe#r!6D4W?-F8lIUSG=D{kS15ttwZRoE z^qz%LjC-r$C^{DSp%<4dxC~pd)K?9gaE(uaCAib)H8F8NAp9QVK3i!g zjirAN_0ccvjQx{AG;Zg%^{K4$47Z`9Y$;V|LzxWUBhjIm$VPQalI;;)cPs`aJkZIe!9FQIEpR~zIN}0RCz^ZD2S@>Na`1Wx; z7x01we+ou9`DQM?k+SV`W7UR^WyT8D`L zC>74-XY(@*8I9SLq;3s(cJ#Mw{?b@Il%> zo{$Y*#rr}EJcF$vz9qXuOQAUSerQuZ)L?1dQc81YU2tLjY+zP8?A+AP;XU0py0ht? z*0jx6@_}j8)6W*WL48#|V7#{SrTW}(BmFh}1@G`L`Etqz<}@T)C>?~18CjOz^K_*& zPhcvoDQ(s@Pj^bwFA!Zbf3J=7_nKdgu|(OU(sMy_WWD}ol6-L%5CO*$A hI7Y+^@5b+m_}uETaIIqEv#P;GM0$N=?Q2gN{tt%vGr<4= diff --git a/build/src/rtl_test b/build/src/rtl_test index 58a91a023032117479ec8debf6e5196bb34a2c37..28339e22cc43624c2807ffc1b4dd6cb62486c4b6 100755 GIT binary patch delta 5161 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 delta 5193 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 diff --git a/include/rtl-sdr.h b/include/rtl-sdr.h index 3ed13ae..6dd76d7 100644 --- a/include/rtl-sdr.h +++ b/include/rtl-sdr.h @@ -389,6 +389,16 @@ RTLSDR_API int rtlsdr_cancel_async(rtlsdr_dev_t *dev); */ RTLSDR_API int rtlsdr_set_bias_tee(rtlsdr_dev_t *dev, int on); +/*! + * Enable or disable any GPIO. + * \param dev the device handle given by rtlsdr_open() + * \param gpio_pin GPIO pin number for ON + * \param on 1 for GPIO on. 0 for GPIO off. + */ +RTLSDR_API int rtlsdr_set_gpio(rtlsdr_dev_t *dev, int gpio_pin, int on); + + + #ifdef __cplusplus } #endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 07d64ab..ac0ff86 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -91,7 +91,9 @@ add_executable(rtl_fm rtl_fm.c) add_executable(rtl_eeprom rtl_eeprom.c) add_executable(rtl_adsb rtl_adsb.c) add_executable(rtl_power rtl_power.c) -set(INSTALL_TARGETS rtlsdr_shared rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power) +add_executable(rtl_biast rtl_biast.c) + +set(INSTALL_TARGETS rtlsdr_shared rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power rtl_biast) target_link_libraries(rtl_sdr rtlsdr_shared convenience_static ${LIBUSB_LIBRARIES} @@ -121,6 +123,10 @@ target_link_libraries(rtl_power rtlsdr_shared convenience_static ${LIBUSB_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ) +target_link_libraries(rtl_biast rtlsdr_shared convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) if(UNIX) target_link_libraries(rtl_fm m) target_link_libraries(rtl_adsb m) @@ -140,6 +146,7 @@ target_link_libraries(rtl_fm libgetopt_static) target_link_libraries(rtl_eeprom libgetopt_static) target_link_libraries(rtl_adsb libgetopt_static) target_link_libraries(rtl_power libgetopt_static) +target_link_libraries(rtl_biast libgetopt_static) set_property(TARGET rtl_sdr APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) set_property(TARGET rtl_tcp APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) set_property(TARGET rtl_test APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) @@ -147,6 +154,7 @@ set_property(TARGET rtl_fm APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) set_property(TARGET rtl_eeprom APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) set_property(TARGET rtl_adsb APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) set_property(TARGET rtl_power APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) +set_property(TARGET rtl_biast APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" ) endif() ######################################################################## # Install built library files & utilities diff --git a/src/librtlsdr.c b/src/librtlsdr.c index 213e96c..aa75415 100644 --- a/src/librtlsdr.c +++ b/src/librtlsdr.c @@ -125,6 +125,7 @@ struct rtlsdr_dev { int dev_lost; int driver_active; unsigned int xfer_errors; + int force_bt; }; void rtlsdr_set_gpio_bit(rtlsdr_dev_t *dev, uint8_t gpio, int val); @@ -368,6 +369,7 @@ static rtlsdr_dongle_t known_devices[] = { #define BULK_TIMEOUT 0 #define EEPROM_ADDR 0xa0 +#define EEPROM_SIZE 256 enum usb_reg { USB_SYSCTL = 0x2000, @@ -1447,6 +1449,7 @@ int rtlsdr_open(rtlsdr_dev_t **out_dev, uint32_t index) struct libusb_device_descriptor dd; uint8_t reg; ssize_t cnt; + uint8_t buf[EEPROM_SIZE]; dev = malloc(sizeof(rtlsdr_dev_t)); if (NULL == dev) @@ -1609,6 +1612,7 @@ found: /* enable spectrum inversion */ rtlsdr_demod_write_reg(dev, 1, 0x15, 0x01, 1); + break; case RTLSDR_TUNER_UNKNOWN: fprintf(stderr, "No supported tuner found\n"); @@ -1618,6 +1622,14 @@ found: break; } + + /* Hack to force the Bias T to always be on if we set the IR-Endpoint bit in the EEPROM to 0. */ + //force_bt = 0; + r = rtlsdr_read_eeprom(dev, buf, 0, EEPROM_SIZE); + dev->force_bt = (buf[7] & 0x02) ? 0 : 1; + if(dev->force_bt) rtlsdr_set_gpio(dev, 0, 1); + + if (dev->tuner->init) r = dev->tuner->init(dev); @@ -2014,8 +2026,24 @@ int rtlsdr_set_bias_tee(rtlsdr_dev_t *dev, int on) if (!dev) return -1; + if(dev->force_bt) return 1; // If force_bt is on from the EEPROM, do not allow bias tee to turn off + rtlsdr_set_gpio_output(dev, 0); rtlsdr_set_gpio_bit(dev, 0, on); return 0; } + +int rtlsdr_set_gpio(rtlsdr_dev_t *dev, int gpio_pin, int on) +{ + if (!dev) + return -1; + + if(dev->force_bt) return 1; // If force_bt is on from the EEPROM, do not allow bias tee to turn off + + rtlsdr_set_gpio_output(dev, gpio_pin); + rtlsdr_set_gpio_bit(dev, gpio_pin, on); + + return 1; +} + diff --git a/src/rtl_biast.c b/src/rtl_biast.c new file mode 100644 index 0000000..6018450 --- /dev/null +++ b/src/rtl_biast.c @@ -0,0 +1,125 @@ +/* + * rtl-sdr, turns your Realtek RTL2832 based DVB dongle into a SDR receiver + * rtl_eeprom, EEPROM modification tool + * Copyright (C) 2012 by Steve Markgraf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include + +#ifndef _WIN32 +#include +#else +#include +#include "getopt/getopt.h" +#endif + +#include "rtl-sdr.h" +#include "convenience/convenience.h" + +#define EEPROM_SIZE 256 +#define MAX_STR_SIZE 256 +#define STR_OFFSET 0x09 + +static rtlsdr_dev_t *dev = NULL; + +typedef struct rtlsdr_config { + uint16_t vendor_id; + uint16_t product_id; + char manufacturer[MAX_STR_SIZE]; + char product[MAX_STR_SIZE]; + char serial[MAX_STR_SIZE]; + int have_serial; + int enable_ir; + int remote_wakeup; +} rtlsdr_config_t; + + +void usage(void) +{ + fprintf(stderr, + "rtl_biast, a tool for turning the RTL-SDR.com \n" + "bias tee or any GPIO ON and OFF. Example to turn on the \n" + "bias tee: rtl_biast -d 0 -b 1\n" + "Any GPIO: rtl_biast -d 0 -g 1 -b 1\n\n" + "Usage:\n" + "\t[-d device_index (default: 0)]\n" + "\t[-b bias_on (default: 0)]\n" + "\t[-g GPIO select (default: 0)]\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + int i, r, opt; + int dev_index = 0; + int dev_given = 0; + uint32_t bias_on = 0; + uint32_t gpio_pin = 0; + int device_count; + char *filename = NULL; + FILE *file = NULL; + char *manuf_str = NULL; + char *product_str = NULL; + char *serial_str = NULL; + uint8_t buf[EEPROM_SIZE]; + rtlsdr_config_t conf; + int flash_file = 0; + int default_config = 0; + int change = 0; + int ir_endpoint = 0; + char ch; + + while ((opt = getopt(argc, argv, "d:b:g:h?")) != -1) { + switch (opt) { + case 'd': + dev_index = verbose_device_search(optarg); + dev_given = 1; + break; + case 'b': + bias_on = atoi(optarg); + break; + case 'g': + gpio_pin = atoi(optarg); + break; + default: + usage(); + break; + } + } + + if (!dev_given) { + dev_index = verbose_device_search("0"); + } + + if (dev_index < 0) { + exit(1); + } + + r = rtlsdr_open(&dev, dev_index); + + rtlsdr_set_gpio(dev, gpio_pin, bias_on); + //rtlsdr_set_bias_tee(dev, bias_on); + + //rtlsdr_set_direct_sampling(dev, 1); + +exit: + rtlsdr_close(dev); + + return r >= 0 ? r : -r; +} +