Bluetooth Outdoor Rated Speakers | Outdoor Speaker Depot (2024)

Bluetooth Outdoor Rated Speakers | Outdoor Speaker Depot (1)

Fun Without Wires

Unleash the fun of wireless connectivity in your outdoor spaces with our Bluetooth Outdoor Speakers. Our selection offers a wide array of speakers, from rock and patio to garden varieties, all designed to install without the need for speaker wires. Leveraging the power of Bluetooth 5.0 technology, these speakers provide high-quality, long-range audio connections ideal for any outdoor setting. Pair these speakers with your phone, tablet, or wireless-enabled receiver and create a seamless, anytime, anywhere audio experience.

$296.99Compare at: $529.99You Save: $233OSD BOM4.1.2 Bluetooth 8" Outdoor Powered Subwoofer, Built in Amp 4x 60W Speaker Outputs
$299Compare at: $448.99You Save: $149.996.5" Bluetooth® 5.0 Outdoor Patio Speaker Pair 150W, IP54 Rated, Black or White BTP650
$179.99Compare at: $269.99You Save: $905.25" Bluetooth® 5.0 Outdoor Patio Speaker Pair 100W, IP54 Rated, Black or White BTP525
$299Compare at: $509.99You Save: $210.99OSD BTR805 8" Bluetooth® Rock Speaker Outdoor Weather Resistant, Brown/Grey (Pair)
$169.99Compare at: $254.99You Save: $855.25" Bluetooth® Wireless Weather Resistant Rock Speaker Pair, Brown, Grey or Slate - BTR150

  • Call Us:
  • 888-779-4968
  • Email:
  • support@osdaudio.com
  • Questions:
  • FAQs


© 2003-2024 OSD Audio. All Rights Reserved.

';var loadinghtml_myFacetResults = '

Bluetooth Outdoor Rated Speakers | Outdoor Speaker Depot (11)

';var loadinghtml_myFacetRefinery = '';/* GD Set the area to scroll to the results. GDCP */window.GDFacetsScrollToResults = function () {setTimeout(function () {if(window.innerWidth >= 960) {/* Desktop. Keep in mind sticky header */$("html, body").animate({ scrollTop: $("main").offset().top }, 600);} else {/* Mobile and no sticky header */$("html, body").animate({ scrollTop: $(".x-collapsing-breadcrumbs").offset().top }, 600);}}, 150);}/* GD We need to now trigger all the theme scripts that do lazy loading and other crazy fun stuff. GDCP */window.GDFacetsAfterDataLoaded = function (what_to_do) {if(what_to_do=='full_from_back_button') {//elementsUI.site();elementsUI.pages.common();//themeFunctionality.init();themeFunctionality.sharedFunctions.observeDeferred();//themeFunctionality.jsCTGY();try {window.init_custom_selects('ajax_reload');}catch(err) {/* console.log("Check init_custom_selects."); */}} else {elementsUI.pages.common();themeFunctionality.sharedFunctions.observeDeferred();themeFunctionality.jsCTGY();window.init_custom_selects('ajax_reload');}gdRangeFinderFixes();}/* GD GDFacetsReloadFromPrev reloads the facet areas using previous data saved in the #js-GDfacetMemory form */window.GDFacetsReloadFromPrev = function () {/* Get saved JSON data from the 3 form inputs in the #js-GDfacetMemory form */var remember_myFacetSort = $("#js-remember_myFacetSort").val();var remember_myFacetTree = $("#js-remember_myFacetTree").val();var remember_myFacetResults = $("#js-remember_myFacetResults").val();var remember_myFacetRefinery = $("#js-remember_myFacetRefinery").val();var updated_at_least_one = false;/* Use saved data to populate the multiple facet areas. */if(remember_myFacetSort != '') {$("#myFacetSort").html(loadinghtml_myFacetSort);$("#myFacetSort").html(remember_myFacetSort);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetSort to reload."); */}if(remember_myFacetTree != '') {$("#myFacetTree").html(loadinghtml_myFacetTree);$("#myFacetTree").html(remember_myFacetTree);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetTree to reload."); */}if(remember_myFacetResults != '') {$("#myFacetResults").html(loadinghtml_myFacetResults);$("#myFacetResults").html(remember_myFacetResults);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetResults to reload."); */} if(remember_myFacetRefinery != '') {$("#myFacetRefinery").html(loadinghtml_myFacetRefinery);$("#myFacetRefinery").html(remember_myFacetRefinery);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetRefinery to reload."); */} if(updated_at_least_one) {/* GD Now Reinit any Theme JS functions. */GDFacetsAfterDataLoaded('full_from_back_button');/* GD Now scroll the user to the new content. */GDFacetsScrollToResults();}/* console.log("GDFacetsReloadFromPrev() Finished."); */}/* GD Override Function MMProdList_UpdateQuery_SubmitParameters from clientside.mvc?Filename=runtime_ui.js */window.MMProdList_UpdateQuery_SubmitParameters = function ( form, params, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_SubmitParameters"); */var i, j, i_len, j_len, elements, params_output_array;/* We don't want this mmprodlist_updatequery_submitparameters_submitted var to kill the function because we're reusing it now. GDCP *//*if ( window.mmprodlist_updatequery_submitparameters_submitted ){return;}window.mmprodlist_updatequery_submitparameters_submitted = true;*/params_output_array = new Array();params.sort( function( a, b ) { return sortAlphaNumeric( a.name, b.name, true ); } );for ( i = 0, i_len = params.length; i < i_len; i++ ){for ( j = 0, j_len = params[ i ].values.length; j < j_len; j++ ){if ( params[ i ].values[ j ].length ){params_output_array.push( encodeURIComponent( params[ i ].name ) + '=' + encodeURIComponent( params[ i ].values[ j ] ) );}}}/* GD: Append the JSON View to the params array. Force the view to be JSON output. GDCP */params_output_array.push( 'view=json' );params_output_array.push( 'killcache2=' + new Date().getTime());/* We're not setting these listeners anymore. They cause a "hickup" with the overrides we do. GDCP */ /*if ( window.mmprodlist_updatequery_submitparameters_timeout ){clearTimeout( window.mmprodlist_updatequery_submitparameters_timeout );delete window.mmprodlist_updatequery_submitparameters_timeout;}if ( window.mmprodlist_updatequery_submitparameters_timeout_event_attached ){elements = form.getElementsByTagName( '*' );for ( i = 0, i_len = elements.length; i < i_len; i++ ){RemoveEvent( elements[ i ], 'mousedown', window.mmprodlist_updatequery_submitparameters_timeout_event_function );RemoveEvent( elements[ i ], 'mousemove', window.mmprodlist_updatequery_submitparameters_timeout_event_function );RemoveEvent( elements[ i ], 'mouseup', window.mmprodlist_updatequery_submitparameters_timeout_event_function );}}*//* GD NOT SENDING TO NEW WINDOW!window.location.href = [ window.location.protocol, '//', window.location.host, window.location.pathname ].join( '' ) + ( params_output_array.length ? ( '?' + params_output_array.join( '&' ) ) : '' );*//* GD: Set the URL of the page to get the JSON data. */var GDfacets_DataURL = [ window.location.protocol, '//', window.location.host, window.location.pathname ].join( '' ) + ( params_output_array.length ? ( '?' + params_output_array.join( '&' ) ) : '' );/* console.log("GDfacets_DataURL: "+GDfacets_DataURL); *//* GD Populate the areas with something while we load new data. */$("#myFacetResults").html(loadinghtml_myFacetResults);/*$("#myFacetSort").html(loadinghtml_myFacetSort);*//*$("#myFacetTree").html(loadinghtml_myFacetTree);*//*$("#myFacetRefinery").html(loadinghtml_myFacetRefinery);*//* GD Ajax Post to the page so we can get the JSON data back and load the various sections all at once with new data. */$.post(GDfacets_DataURL,function(json_data) { })/*for success*/.done(function(json_data) {/* GD Now scroll the user to the new content. */if(json_data.products_on_page_count > 0) {/* GD Load the various sections all at once with new HTML. */$("#myFacetSort").html(json_data.new_myFacetSort);$("#myFacetTree").html(json_data.new_myFacetTree);$("#myFacetResults").html(json_data.new_myFacetResults);$("#myFacetRefinery").html(json_data.new_myFacetRefinery);/* GD Save the new HTML to the remember form fields. */$("#js-remember_myFacetSort").val(json_data.new_myFacetSort);$("#js-remember_myFacetTree").val(json_data.new_myFacetTree);$("#js-remember_myFacetResults").val(json_data.new_myFacetResults);$("#js-remember_myFacetRefinery").val(json_data.new_myFacetRefinery);$("#js-remember_products_found").val(json_data.products_on_page_count);/* GD Now Reinit any Theme JS functions. */GDFacetsAfterDataLoaded();/* Scroll to results */GDFacetsScrollToResults();} else {/* There are no valid results. */$("#myFacetResults").html('

Sorry, no results match these filters.

Undo the last filter or RESET.

');}})/*for failed*/.fail(function(json_data) {/* console.log( "error reloading avail facets to "+doAjaxFacetURL ); */})/*for completion, whether success or error*/.always(function(json_data) {}); }/* GD Override Function MMProdList_UpdateQuery_SubmitParameters_Timeout from clientside.mvc?Filename=runtime_ui.js*/window.MMProdList_UpdateQuery_SubmitParameters_Timeout = function ( form, submit_delay, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_SubmitParameters_Timeout"); */var i, i_len, elements;submit_delay = stoi_def_nonneg( submit_delay, 0 )if ( window.mmprodlist_updatequery_submitparameters_timeout ){clearTimeout( window.mmprodlist_updatequery_submitparameters_timeout );delete window.mmprodlist_updatequery_submitparameters_timeout;}if ( submit_delay === 0 ){return MMProdList_UpdateQuery_SubmitParameters_LowLevel( form );}window.mmprodlist_updatequery_submitparameters_timeout = setTimeout( function() { MMProdList_UpdateQuery_SubmitParameters_LowLevel( form ); }, submit_delay );if ( !window.mmprodlist_updatequery_submitparameters_timeout_event_attached ){window.mmprodlist_updatequery_submitparameters_timeout_event_attached = true;window.mmprodlist_updatequery_submitparameters_timeout_event_function = function( event ) { MMProdList_UpdateQuery_SubmitParameters_Timeout( form, submit_delay ); };/* We're not setting these listeners anymore. They cause a "hickup" with the overrides we do. GDCP *//*elements = form.getElementsByTagName( '*' );for ( i = 0, i_len = elements.length; i < i_len; i++ ){AddEvent( elements[ i ], 'mousedown', window.mmprodlist_updatequery_submitparameters_timeout_event_function );AddEvent( elements[ i ], 'mousemove', window.mmprodlist_updatequery_submitparameters_timeout_event_function );AddEvent( elements[ i ], 'mouseup', window.mmprodlist_updatequery_submitparameters_timeout_event_function );}*/}}/* GD Override Function MMProdList_UpdateQuery_Notify_Updating from clientside.mvc?Filename=runtime_ui.js*/ window.MMProdList_UpdateQuery_Notify_Updating = function ( form, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_Notify_Updating"); */var i, i_len;/* We're not disabling the facet fields anymore. We can if needed. It's not required. GDCP *//*for ( i = 0, i_len = form.elements.length; i < i_len; i++ ){form.elements[ i ].setAttribute( 'disabled', 'disabled' );}*/}});}

Bluetooth Outdoor Rated Speakers | Outdoor Speaker Depot (2024)
Top Articles
Latest Posts
Article information

Author: Geoffrey Lueilwitz

Last Updated:

Views: 6615

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Geoffrey Lueilwitz

Birthday: 1997-03-23

Address: 74183 Thomas Course, Port Micheal, OK 55446-1529

Phone: +13408645881558

Job: Global Representative

Hobby: Sailing, Vehicle restoration, Rowing, Ghost hunting, Scrapbooking, Rugby, Board sports

Introduction: My name is Geoffrey Lueilwitz, I am a zealous, encouraging, sparkling, enchanting, graceful, faithful, nice person who loves writing and wants to share my knowledge and understanding with you.